なるほど、こういう しきって、あと なんとおり くらい あるんだろう、あとで しらべておこう、って おもったんだけれど、そのことを、せんしゅう にほんに かえった ときに おもいだした。
じかんも あったので、さくっと コードを かいて じっこう。ruby で 100ぎょうくらい。とくに 工夫も せずに ぜんぶ しらべたので えらく じかんが かかった。3じかん じゃく。もし 来年 2011 に なる くみあわせを しらべる ことに なったら、そのときには 半分いかの じかんで うごくように 改良してから じっこう したい。
さて、1 + 2 + 3... という くみあわせを すべて つくって それを 順番に しらべていく のは さすがに むちゃ なので、しきは RPN (Reverse Polish Notation) で ためす。かっこが いらないので シンプル。
けっかは、しきの くみあわせは 93,716,480 とおりで、2010 に 一致 したのは そのうち 186 とおり あった。けっこう ある。
- 1 2 3 4 5 - 6 7 * 8 * + 9 * / / *
- 1 2 3 4 5 + - 6 7 8 * * * - 9 - +
- 1 2 3 4 5 + - 6 * 7 8 * * 9 + - +
- 1 2 + 3 4 - 5 - 6 * 7 * 8 * 9 + -
- 1 2 + 3 4 5 + - 6 7 8 * * * - 9 -
- 1 2 * 3 / 4 5 - 6 7 * 8 * + 9 * *
- 1 2 3 4 5 + - 6 * 7 * 8 * - 9 - +
- 1 2 * 3 / 4 5 + 6 7 * * 8 * 9 - *
- 1 2 3 4 5 6 * 7 8 * + * 9 - * * *
- 1 2 3 4 5 - 6 7 8 * * + / 9 / / *
- 1 2 3 4 5 + - 6 * 7 8 * * - + 9 -
- 1 2 - 3 4 5 6 / 7 8 * + * - - 9 *
- 1 2 3 / 4 5 - 6 7 * 8 * + 9 * * *
- 1 2 3 / * 4 5 + 6 * 7 * 8 * 9 - *
- 1 2 * 3 / 4 5 - 6 7 8 * * + * 9 *
- 1 2 + 3 4 5 + - 6 7 * * 8 * 9 + -
- 1 2 3 / 4 5 6 7 * 8 * - - * 9 * *
- 1 2 3 / 4 5 - 6 7 8 * * + 9 * * *
- 1 2 * 3 / 4 5 6 7 * 8 * - - 9 * *
- 1 2 3 * * 4 5 6 * 7 8 * + * 9 - *
- 1 2 - 3 - 4 5 + 6 / 7 8 * 9 * - *
- 1 2 3 4 5 6 + * * 7 - * 8 * + 9 +
- 1 2 3 4 5 + 6 7 * * 8 * 9 - / / *
- 1 2 3 4 5 + - 6 7 * 8 * * - 9 - +
- 1 2 3 4 * + + 5 6 7 8 + 9 * - - *
- 1 2 + 3 4 5 + - 6 * 7 8 * * - 9 -
- 1 2 3 / 4 5 + 6 7 * * 8 * 9 - * *
- 1 2 3 + - 4 5 + 6 / 7 8 9 * * - *
- 1 2 3 4 5 6 7 8 * * - - / / 9 * *
- 1 2 3 4 5 + 6 7 * 8 * * 9 - / / *
- 1 2 * 3 4 5 6 7 8 * * - - 9 * / /
- 1 2 * 3 4 5 + 6 * 7 8 * * 9 - / /
- 1 2 3 / 4 5 - 6 7 * 8 * + * 9 * *
- 1 2 3 4 5 6 7 * 8 + + * + 9 * + +
- 1 2 3 4 5 - 6 7 8 * * + / / 9 * *
- 1 2 3 4 5 + 6 * 7 8 * * 9 - / / *
- 1 2 3 / * 4 5 + 6 7 * * 8 * 9 - *
- 1 2 3 / 4 5 - 6 7 8 * * + * 9 * *
- 1 2 + 3 4 5 6 7 * + 8 + * + 9 * +
- 1 2 + 3 4 - 5 - 6 * 7 8 * * - 9 -
- 1 2 3 + - 4 5 6 / 7 8 * + * + 9 *
- 1 2 3 4 5 6 7 8 * * - - / 9 / / *
- 1 2 + 3 4 - 5 - 6 7 8 * * * - 9 -
- 1 2 3 4 - 5 - 6 * 7 8 * * - 9 - +
- 1 2 3 4 5 + - 6 7 * * + 8 * 9 - -
- 1 2 3 4 * 5 6 + * 7 - 8 * * + 9 +
- 1 2 3 4 * 5 6 + * 7 - * 8 * 9 + +
- 1 2 3 / * 4 5 - 6 7 8 * * + * 9 *
- 1 2 3 4 5 + - 6 * 7 * 8 * 9 + - +
- 1 2 3 4 - 5 - 6 7 * * + 8 * - 9 +
- 1 2 + 3 4 * + 5 6 7 8 + 9 * - - *
- 1 2 + 3 4 5 6 - 7 8 * + * + 9 * +
- 1 2 * 3 4 5 6 7 8 * * - - / / 9 *
- 1 2 3 / * 4 5 6 7 * 8 * - - 9 * *
- 1 2 3 + 4 5 6 / 7 8 * + * - - 9 *
- 1 2 + 3 4 5 + * 6 + 7 * 8 - 9 * +
- 1 2 + 3 4 - 5 - 6 7 * * 8 * 9 + -
- 1 2 + 3 4 5 6 + * 7 8 + * 9 + * +
- 1 2 3 4 - 5 - 6 * 7 * + 8 * 9 - -
- 1 2 3 + - 4 5 + 6 / 7 8 * 9 * - *
- 1 2 3 / * 4 5 6 7 8 * * - - 9 * *
- 1 2 3 4 5 6 / 7 - * - 8 * + 9 * *
- 1 2 3 4 5 + - 6 * 7 * 8 * - + 9 -
- 1 2 3 4 - 5 - 6 7 * * 8 * 9 + - +
- 1 2 3 / * 4 5 - 6 7 * 8 * + 9 * *
- 1 2 3 4 5 + 6 * 7 * 8 * 9 - / / *
- 1 2 * 3 4 5 - 6 7 8 * * + / 9 / /
- 1 2 * 3 / 4 5 6 7 8 * * - - * 9 *
- 1 2 3 4 5 + - 6 * 7 * + 8 * - 9 +
- 1 2 3 4 - 5 - 6 7 * * 8 * - + 9 -
- 1 2 * 3 * 4 5 6 * 7 8 * + * 9 - *
- 1 2 * 3 / 4 5 - 6 7 * 8 * + * 9 *
- 1 2 3 4 5 - 6 7 8 * * + / / * 9 *
- 1 2 3 4 5 + - 6 7 * 8 * * 9 + - +
- 1 2 * 3 / 4 5 + 6 * 7 8 * * 9 - *
- 1 2 * 3 4 5 6 7 * 8 * - - / 9 / /
- 1 2 * 3 4 5 + 6 7 8 * * * 9 - / /
- 1 2 3 4 5 + - 6 7 8 * * * 9 + - +
- 1 2 3 4 5 + - 6 7 * * 8 * - 9 - +
- 1 2 * 3 4 5 + 6 * 7 * 8 * 9 - / /
- 1 2 + 3 4 5 6 7 8 * - - * + 9 * +
- 1 2 * 3 / 4 5 + 6 7 8 * * * 9 - *
- 1 2 3 4 5 + - 6 7 * 8 * * - + 9 -
- 1 2 3 4 - 5 - 6 * 7 8 * * 9 + - +
- 1 2 3 * 4 5 6 * 7 8 * + * 9 - * *
- 1 2 + 3 4 5 + - 6 7 * 8 * * - 9 -
- 1 2 + 3 + 4 5 6 * 7 8 * + * 9 - *
- 1 2 3 / 4 5 6 7 8 * * - - 9 * * *
- 1 2 + 3 4 5 + - 6 * 7 * 8 * - 9 -
- 1 2 3 / 4 5 + 6 * 7 8 * * 9 - * *
- 1 2 3 / 4 5 6 7 * 8 * - - * * 9 *
- 1 2 3 4 5 6 7 8 * * - - 9 * / / *
- 1 2 3 4 5 6 + * * 7 - 8 * * 9 + +
- 1 2 3 4 5 + - 6 7 8 * * * - + 9 -
- 1 2 3 4 - 5 - 6 * 7 * 8 * - 9 - +
- 1 2 + 3 4 5 + - 6 7 8 * * * 9 + -
- 1 2 * 3 / 4 5 6 7 * 8 * - - * 9 *
- 1 2 + 3 4 5 6 7 * 8 + + * + 9 * +
- 1 2 * 3 4 5 - 6 7 * 8 * + / 9 / /
- 1 2 + 3 4 - 5 - 6 7 * 8 * * - 9 -
- 1 2 3 4 5 - 6 7 8 * * + 9 * / / *
- 1 2 3 4 5 - 6 7 * 8 * + / / 9 * *
- 1 2 3 4 - 5 - 6 * 7 8 * * - + 9 -
- 1 2 3 + + 4 5 6 * 7 8 * + * 9 - *
- 1 2 + 3 4 - 5 - 6 7 8 * * * 9 + -
- 1 2 3 4 5 6 7 8 * * - - / / * 9 *
- 1 2 3 4 5 6 - 7 8 * + * + 9 * + +
- 1 2 3 4 5 - 6 7 * 8 * + / 9 / / *
- 1 2 3 / 4 5 - 6 7 * 8 * + * * 9 *
- 1 2 3 / * 4 5 - 6 7 * 8 * + * 9 *
- 1 2 3 4 5 6 7 * 8 * - - / / 9 * *
- 1 2 3 4 * 5 6 + * 7 - * 8 * + 9 +
- 1 2 3 / * 4 5 + 6 * 7 8 * * 9 - *
- 1 2 3 / 4 5 - 6 7 8 * * + * * 9 *
- 1 2 * 3 4 5 + 6 7 * 8 * * 9 - / /
- 1 2 3 4 5 6 7 * 8 * - - / 9 / / *
- 1 2 3 / * 4 5 + 6 7 8 * * * 9 - *
- 1 2 * 3 4 5 - 6 7 8 * * + 9 * / /
- 1 2 3 / 4 5 6 7 8 * * - - * 9 * *
- 1 2 3 4 + * + 5 6 - 7 8 + 9 * + *
- 1 2 3 4 - 5 - 6 7 * 8 * * - 9 - +
- 1 2 + 3 4 5 + - 6 * 7 8 * * 9 + -
- 1 2 3 4 - 5 - 6 7 8 * * * - 9 - +
- 1 2 3 / * 4 5 6 7 * 8 * - - * 9 *
- 1 2 * 3 4 5 6 7 * 8 * - - 9 * / /
- 1 2 3 4 5 6 7 8 * - - * + 9 * + +
- 1 2 3 4 5 6 / 7 8 * + * - + - 9 *
- 1 2 3 4 5 6 + * 7 8 + * 9 + * + +
- 1 2 3 4 5 + 6 7 8 * * * 9 - / / *
- 1 2 3 4 5 + - 6 7 * * 8 * 9 + - +
- 1 2 + 3 4 - 5 - 6 * 7 * 8 * - 9 -
- 1 2 3 / * 4 5 6 7 8 * * - - * 9 *
- 1 2 + 3 4 - 5 - 6 * 7 8 * * 9 + -
- 1 2 * 3 4 5 6 / 7 - * - 8 * + 9 *
- 1 2 3 4 5 6 / 7 - * - 8 * + * 9 *
- 1 2 * 3 / 4 5 + 6 7 * 8 * * 9 - *
- 1 2 * 3 4 5 - 6 7 8 * * + / / 9 *
- 1 2 * 3 / 4 5 - 6 7 8 * * + 9 * *
- 1 2 3 4 5 + * 6 + 7 * 8 - 9 * + +
- 1 2 3 4 5 + - 6 7 * * 8 * - + 9 -
- 1 2 3 4 5 + - 6 * 7 8 * * - 9 - +
- 1 2 3 / 4 5 + 6 * 7 * 8 * 9 - * *
- 1 2 * 3 / 4 5 + 6 * 7 * 8 * 9 - *
- 1 2 * 3 4 5 6 * 7 8 * + * 9 - * *
- 1 2 * 3 4 5 6 7 * 8 * - - / / 9 *
- 1 2 + 3 4 5 6 + 7 8 + * * 9 + * +
- 1 2 3 4 - 5 - 6 * 7 * 8 * 9 + - +
- 1 2 + 3 4 5 + - 6 7 * 8 * * 9 + -
- 1 2 * 3 4 5 - 6 7 * 8 * + 9 * / /
- 1 2 3 4 5 6 7 * + 8 + * + 9 * + +
- 1 2 3 4 5 + - 6 7 * * + 8 * - 9 +
- 1 2 + 3 4 5 + - 6 7 * * 8 * - 9 -
- 1 2 3 4 5 6 + * * 7 - 8 * * + 9 +
- 1 2 3 4 5 6 + * * 7 - * 8 * 9 + +
- 1 2 3 4 - 5 - 6 * 7 * 8 * - + 9 -
- 1 2 + 3 4 - 5 - 6 7 * * 8 * - 9 -
- 1 2 3 4 5 + - 6 * 7 * + 8 * 9 - -
- 1 2 3 4 * + + 5 6 - 7 8 + 9 * + *
- 1 2 * 3 4 5 + 6 7 * * 8 * 9 - / /
- 1 2 3 4 5 6 7 * 8 * - - 9 * / / *
- 1 2 3 4 5 6 + 7 8 + * * 9 + * + +
- 1 2 3 4 - 5 - 6 7 * 8 * * 9 + - +
- 1 2 3 / * 4 5 - 6 7 8 * * + 9 * *
- 1 2 3 / 4 5 + 6 7 * 8 * * 9 - * *
- 1 2 3 4 - 5 - 6 * 7 * + 8 * - 9 +
- 1 2 3 / * 4 5 + 6 7 * 8 * * 9 - *
- 1 2 * 3 4 5 - 6 7 * 8 * + / / 9 *
- 1 2 3 4 5 - 6 7 * 8 * + / / * 9 *
- 1 2 3 4 - 5 - 6 7 8 * * * 9 + - +
- 1 2 3 4 - 5 - 6 7 * * 8 * - 9 - +
- 1 2 3 4 - 5 - 6 7 * * + 8 * 9 - -
- 1 2 3 4 + * + 5 6 7 8 + 9 * - - *
- 1 2 3 / 4 5 + 6 7 8 * * * 9 - * *
- 1 2 3 4 * 5 6 + * 7 - 8 * * 9 + +
- 1 2 3 4 - 5 - 6 7 * 8 * * - + 9 -
- 1 2 * 3 4 5 6 7 8 * * - - / 9 / /
- 1 2 3 4 5 6 7 * 8 * - - / / * 9 *
- 1 2 3 4 - 5 - 6 7 8 * * * - + 9 -
- 1 2 3 / 4 5 6 7 * 8 * - - 9 * * *
- 1 2 + 3 4 5 + - 6 * 7 * 8 * 9 + -
- 1 2 - 3 - 4 5 + 6 / 7 8 9 * * - *
- 1 2 - 3 - 4 5 6 / 7 8 * + * + 9 *
- 1 2 3 / 4 5 6 7 8 * * - - * * 9 *
- 1 2 * 3 / 4 5 6 7 8 * * - - 9 * *
- 1 2 + 3 4 * + 5 6 - 7 8 + 9 * + *
- 1 2 + 3 4 - 5 - 6 7 * 8 * * 9 + -
たくさん ある なかで とくに
1 2 3 4 5 6 7 8 * * - - / / 9 * *は いんしょうてき。1 から 8 まで いっきに ならべられるのも すごいし、たしざんを つかってないのも いい。おぼえやすい。
つぎは これを infix notation に へんかん。うえの しき だと、RPN を しらない ひとには 自慢 できないし。
ちなみに、演算を 全部 かっこで くくる、みたいに して へんかん すると うまく いかない。
たとえば 1 2 + 3 + と 1 2 3 + + は、それぞれ infix notation に へんかん すると ((1 + 2) + 3) と (1 + (2 + 3)) に なって、かっこを てんかい すれば まったく おなじ しきに なる。
なので、たしざんには かっこを つけない、ひきざんは a - b の b に + か - が はいっていたら a - (b) に する、などの 処理を しながら へんかん していく。ちょっと 注意が 必要。
というわけで、へんかんの けっかは いかの 48 とおり。
- 1 * 2 / (3 / ((4 + 5) * 6 * 7 * 8 - 9))
- 1 * (2 / (3 / ((4 + 5) * 6 * 7 * 8 - 9)))
- 1 + 2 + (3 + 4 * (5 - (6 - 7 * 8))) * 9
- (1 - (2 + 3 - 4 * (5 / 6 + 7 * 8))) * 9
- 1 * (2 / ((3 / (4 - (5 - 6 * 7 * 8))) / 9))
- (1 - 2 - (3 - 4 * (5 / 6 + 7 * 8))) * 9
- 1 * (2 / (3 / ((4 - 5 + 6 * 7 * 8) * 9)))
- 1 + 2 + 3 * (4 * (5 + 6) * (7 + 8) + 9)
- (1 - (2 + 3)) * ((4 + 5) / 6 - 7 * 8 * 9)
- 1 * (2 / 3) * (4 - (5 - 6 * 7 * 8)) * 9
- 1 * (2 / 3) * ((4 + 5) * 6 * 7 * 8 - 9)
- 1 * 2 * 3 * (4 * (5 * 6 + 7 * 8) - 9)
- (1 - (2 + 3) + 4 * (5 / 6 + 7 * 8)) * 9
- 1 * (2 / (3 / (4 - (5 - 6 * 7 * 8)))) * 9
- 1 + 2 * (3 * 4 * (5 + 6) - 7) * 8 + 9
- (1 * 2 / (3 / (4 - 5 + 6 * 7 * 8))) * 9
- (1 * 2 + (3 - 4 * (5 / 6 - 7)) * 8) * 9
- 1 - ((2 + (3 - 4 - 5) * 6 * 7) * 8 - 9)
- 1 * (2 / (3 / (4 - 5 + 6 * 7 * 8))) * 9
- 1 + 2 + (3 + 4 * (5 + 6 * 7 + 8)) * 9
- (1 + 2 + 3 * 4) * (5 - 6 + (7 + 8) * 9)
- 1 * (2 / (3 / ((4 - (5 - 6 * 7 * 8)) * 9)))
- 1 * (2 + (3 - 4 * (5 / 6 - 7)) * 8) * 9
- 1 * 2 / (3 / ((4 - (5 - 6 * 7 * 8)) * 9))
- (1 + 2 + 3 * 4) * (5 - (6 - (7 + 8) * 9))
- (1 * 2 / 3) * ((4 + 5) * 6 * 7 * 8 - 9)
- (1 + 2 * (3 + 4)) * (5 - 6 + (7 + 8) * 9)
- 1 * 2 / ((3 / (4 - 5 + 6 * 7 * 8)) / 9)
- 1 + 2 + ((3 * (4 + 5) + 6) * 7 - 8) * 9
- 1 + 2 + (3 + 4 * (5 - 6 + 7 * 8)) * 9
- 1 * (2 / 3) * (4 - 5 + 6 * 7 * 8) * 9
- 1 + 2 - ((3 - (4 + 5)) * 6 * 7 * 8 + 9)
- 1 + 2 - (3 - (4 + 5)) * 6 * 7 * 8 - 9
- 1 - (2 + (3 - (4 + 5)) * 6 * 7) * 8 + 9
- (1 * 2 / (3 / (4 - (5 - 6 * 7 * 8)))) * 9
- (1 - 2 - 3 + 4 * (5 / 6 + 7 * 8)) * 9
- (1 + 2 + 3) * (4 * (5 * 6 + 7 * 8) - 9)
- 1 - ((2 + (3 - (4 + 5)) * 6 * 7) * 8 - 9)
- 1 * (2 / ((3 / (4 - 5 + 6 * 7 * 8)) / 9))
- (1 + 2 * (3 + 4)) * (5 - (6 - (7 + 8) * 9))
- 1 * 2 / (3 / ((4 - 5 + 6 * 7 * 8) * 9))
- 1 * 2 / ((3 / (4 - (5 - 6 * 7 * 8))) / 9)
- 1 + 2 - (3 - 4 - 5) * 6 * 7 * 8 - 9
- (1 * 2 / 3) * (4 - (5 - 6 * 7 * 8)) * 9
- 1 - (2 + (3 - 4 - 5) * 6 * 7) * 8 + 9
- (1 - 2 - 3) * ((4 + 5) / 6 - 7 * 8 * 9)
- (1 * 2 / 3) * (4 - 5 + 6 * 7 * 8) * 9
- 1 + 2 - ((3 - 4 - 5) * 6 * 7 * 8 + 9)
ふつうの しきは Google で かんたんに 確認 できるのが べんり。RPN も けいさんの けっかを 確認 できるように するべき だろうか。
この なかでは、やはり Knuth せんせいの ケーキに えらばれた
1 + 2 + 3 * (4 * (5 + 6) * (7 + 8) + 9)が いちばん いんしょうてき。たしざんと かけざん しか つかってない。
たしざんと かけざん だけの しき は、もう ひとつ
1 + 2 + (3 + 4 * (5 + 6 * 7 + 8)) * 9が あるけれど、こちらは 8の うしろに かっこが ふたつ 連続で ならぶ のが うつくしくない。
って、しゅんは とっくに すぎてる 話題 だけれど、今年は まだ なにも かいてなかったので、とりあえず、こんな かんじで スタートを きっておきます。文句が あったら "@n (cont)" あてに twitlonger けいゆで 連絡 ください。さくっと block します。わ
0 件のコメント:
コメントを投稿