Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Widest Roman Prime (soff.es)
104 points by kellysutton on Feb 6, 2016 | hide | past | favorite | 28 comments


Simple solution in Mathematica: http://i.imgur.com/2iBIRwN.png


I like this solution the most. Some questions on @wacnt (like this one) can't be answered because Wolfram Alpha's NLP fails to recognize the algorithm implicit in the question, but if it was able to translate the problem statement into a machine-readable form, this would be very close to it.

Edit: Some background on @wacnt: https://docs.google.com/document/d/17me2A-SG5Z0Mr9Xd-a1kT1HQ...


Here it is in JavaScript (feel free to play around with it): https://tonicdev.com/tolmasky/widest-roman-prime

Took me only a couple of minutes since it was mainly just searching for the right npm packages to piece together. Say what you like about micro libraries, but for explorations like this it really makes JavaScript in a league of its own.


> Say what you like about micro libraries, but for explorations like this it really makes JavaScript in a league of its own.Say what you like about micro libraries, but for explorations like this it really makes JavaScript in a league of its own.

Indeed, we spend so much time arguing about programming languages, when in reality the presence or absence of libraries is much more important.


> Indeed, we spend so much time arguing about programming languages, when in reality the presence or absence of libraries is much more important.

+1,+1


That's the exact reason I believe in Javascript. Exploration and when you need something done quick and dirty.


You are missing the last step, using the "times new roman" font.


Its on line 26 (have to scroll down to see it).


Should have just done it in Common Lisp. Roman numeral formatting is built-in.

    ? (format nil "~@r" 3989)
    "MMMCMLXXXIX"


I'd imagine it's not easy to render the text out into Times without UIKit or equivalent? Pretty cool that it has that built in, though.


Actually, that's pretty easy too in CCL. It has a very nice ObjC bridge.


20 bits would do it.


But would the font make any difference to the answer?


It asks for the widest string in pixels in a proportional font, so the different letters matter.


Since most proportional fonts have somewhat similar widths, probably not. But if you just look at the longest string (or use a non-proportional font) there will be four roman numbers of equal length/width.


The problem is underspecified because it does not define under which renderer the text should be measured. Kerning could reorder some of the close ties.


I thought 3888 will be wider than 3889 because VIII certainly feels wider than IX but I am not font expert so I don't know


But it wouldn't be a prime.


ah missed that. Thanks!


Strictly speaking that's the widest modern usage Roman prime under 4000.

The actual Romans were inconsistent in their use of the subtractive principle, see http://www.straightdope.com/columns/read/1371/what-is-the-pr...

So there might be ways to construct a wider one.


Its funny with all these new sort of bracket like functional programming languages with similar syntax it actually took me a minute to figure out that the code is Swift(probably lack of experience)... Looks like Scala.. no scala doesn't use let.. is it Rust.. nope not Rust.. rust does not use "import".. can't be Ocaml or F# because of no brackets... ah UIKit.


The next question that popped into my head is, what's the thinnest Roman Prime?

Took me about sixty seconds before I realized that was a stupid question :)


Depends, monospaced font or not? It's either 2 or 5


Wow, Swift is perfect for doing this kind of thing


So it seems but mostly because of the UI component where you can calculate the width of the resulting text without having to hardcode the width of individual characters.


The challenge wasn't print the largest prime under 4000, it was find the prime with the most digits. So the lisper example gave the wrong answer. Still need to generate the prime, count the digits and return the one with the most digits. No sure that the lisp version would be less lines of code, but I'll guess a recursive version would be close


It's not to find the one with the most digits. It's to find the widest one in Times New Roman. Times New Roman is not a fixed-width font, so the widest one might have less digits than some other one. For example I is less wide than M.


Haha. Funny.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: