Hacker News new | ask | show | jobs
Jezen/is-thirteen: Check if a number is equal to 13 (github.com)
97 points by joeyyang 3734 days ago
19 comments

My first reaction was, "Haha. That's fun code-as-parody."

Then I looked at the unit tests. [1] Now my reaction is more like, "Your commitment to this bit is both admirable and slightly disturbing."

[1] https://github.com/jezen/is-thirteen/blob/master/test.js

> tap.equal(is("B").thirteen(), true); // B looks like 13
Unless it's hidden by obfuscation, judging by the source code I think that test actually fails, and hilariously only lowercase 'b' works.
I think that's the point the parody is making. A simple "piece" of code can have thousands of edge cases that a normal developer doesn't think about. That's the advantage of the UNIX-style "everything does one thing and does it well" philosophy that Node mirrors.
You could just as easily read it as a comment on overengineering.
That's what I did anyway...
I think that either [1] That IS the joke, or [2] the issues are where the good jokes lie. Maybe the real joke is in the commits?
It's pretty much brilliant top to bottom. I starred the hell out of this repo.
I'm imagining someone repeatedly unstarring the repo just to re-star it again.
This is a great example of why it is important to use modules. If I were to try implementing this myself, I might have thought to check for the Chinese string "十三", but I doubt I would have known to check for the uppercase version of the Chinese string "拾叄".

More seriously, does anyone know what "uppercase" means in Chinese? Do they literally have two (seemingly unrelated) forms for each of their characters?

Only numerals have upper cases to prevent tampering. For example, you can alter 一(one) to 十(ten) pretty easily, but not 壹 to 拾.
Oh, that actually makes a lot of sense. That also explains why they're used for checkwriting. Thanks!
Uppercase is just a simple way to put it, but it's not exactly precise. Chinese has different numeral forms depending on the usage context. The more complex versions are also known as Financial.

https://en.wikipedia.org/wiki/Chinese_numerals#Standard_numb...

Chinese only has uppercase numbers (called 大写, lit. "big writing").

I̶ ̶d̶o̶n̶'̶t̶ ̶k̶n̶o̶w̶ ̶w̶h̶y̶,̶ ̶b̶u̶t̶ ̶I̶'̶m̶ ̶h̶a̶r̶d̶l̶y̶ ̶a̶n̶ ̶e̶x̶p̶e̶r̶t̶ ̶i̶n̶ ̶C̶h̶i̶n̶e̶s̶e̶.̶ ̶T̶h̶e̶y̶'̶r̶e̶ ̶n̶o̶t̶ ̶u̶s̶e̶d̶ ̶m̶u̶c̶h̶.

EDIT: Nevermind me, see xiaq's much better comment.

Does anyone know why this breaks the content wrapping? I have seen <pre> classes do this but this text is just normal HN comment class.

I really hope using strikeout unicode does not catch on around here. It is horrible.

Works fine for me (Firefox on Android and Windows)—I think your browser doesn't handle Unicode combining characters properly. (Chrome gets a little funky with them on Android, haven't used Windows Chrome in a while).

The reason is it's two codepoints but one "grapheme", and some software doesn't handle grapheme clusters well.

There is no uppercase character in Chinese.

The Chinese characters are unicode strings.

The answer would be the same about an uppercase emoji.

Thank goodness they have a Code of Conduct for contributors. The people behind this project wouldn't want to put other people down.
They are very proud of their Code of Conduct and Kindness (COCK).
They should be. It's small but effective, proving once again that size doesn't matter.
I think FizzBuzz is far more complex problem than this isThirteen. This FizzbuzzEE solution shows where Java truly shines: powerful dependency management, industry leading design patterns. My only wish is to add parallel streams, lambda and other latest Java 8 feature support.
This was a lot more effective before Github collapsed empty directories.
Holy hell, that is impressive.
This native version has much better performance: https://github.com/taganaka/is-thirteen-native
We have reached peak npm.
Half the issues suggest the use of actual NPM modules, and I'm at a loss to tell which ones are jokes. For example: "Replace noop3 with noop4 (also keep an eye out for noop5)" https://github.com/jezen/is-thirteen/issues/151
tap.equal(is('Olivia Wilde').thirteen(), true);

Fellow House fan!

commit 512813f

Added Klingon translation and and test for word "thirteen"

https://github.com/jezen/is-thirteen/commit/512813f

177 commits.
Favorite so far: "Remove imgur dependency"
Pfft.. So far they've all missed Octal support (015). Relax, everyone, I took care of it: https://github.com/jezen/is-thirteen/pull/259/
54 open issues
For more 13 fun, check of the Magic: the Gathering card Triskaidekaphobia. (Specifically, counts in the art and the rules text.)

http://media.wizards.com/2016/aksdjciawolkcc0_soi/en_CMrxVcz...

Isn't MTG a 1v1 game generally? "Each player"?
I think it depends on the format, so cards have to handle the case of many players.

I think there are quite a number of many player formats actually.

Like, in one, some number of packs a cracked, and they are passed around in a circle, each person picking one card, until everyone has a deck, and then they play.

Iirc. (Haven't played it myself.)

Elder Dragon Highlander or Commander is a multiplayer format. http://mtgcommander.net/rules.php
It is "each player" since the card can backfire and cause you to lose the game, if your opponent is clever.
Few days too early?

I think it would be better done with 11 though.

"Check if this one goes to..."

Seems like a spin off of five.js

https://github.com/jackdcrawford/five

So it seems, and by years.
This library is just what I need for my side project. Hopefully it will be taken up as a standard for other numeric comparisons.
Does this work on IE7?
I thought this was a parody on pad-left.
unit test for morse code: thirtees?
If he's going to troll like this, shouldn't it have 13 obscure dependencies as well?
Can't someone do this in about 4 characters of Perl?
Yes, but the "could be interpreted as" operator, colloquially "sleep equals" is pretty obscure and not recommended for production: "thirteen" ~_~ 13