子供だと5分で解けてプログラマだと1時間かかる問題を Squeak Smalltalk で
ネタバレ注意。
問題となっている画像は次のもの。問題文はテキストを記載している。
This problem can be solved by pre-school children in 5-10 minutes, by programmers -in 1 hour, by people with higher education… well, check it yourself! (この問題は就学前の子供であれば5〜10分、プログラマーであれば1時間以内で解けます。高等教育を受けた人間であれば…自分自身で試してみて!)
http://ict.pken.com/2012/02/facebook_sansu/
これは Squeak Smalltalk ならではの特徴を活かせるいい問題なんじゃないかなぁーと思えたのでソルバー?(というよりはネタは割れているので単なるデコーダーか)を書いてみました。
| numEnclosedOf | numEnclosedOf := [:str | | form count | form := (' ', str, ' ') asDisplayText form stencil. count := 0. 0 to: form width-1 do: [:x | 0 to: form height-1 do: [:y | (form colorAt: x@y) = Color white ifTrue: [ form floodFill: Color black at: x@y. count := count + 1]]]. count - 1]. { '8809' -> 6. '7111' -> 0. '2172' -> 0. '6666' -> 4. '1111' -> 0. '3213' -> 0. '7662' -> 2. '9313' -> 1. '0000' -> 4. '2222' -> 0. '3333' -> 0. '5555' -> 0. '8193' -> 3. '8096' -> 5. '7777' -> 0. '9999' -> 4. '7756' -> 1. '6855' -> 3. '9881' -> 5. '5531' -> 0 } allSatisfy: [:assoc | (numEnclosedOf value: assoc key) = assoc value]. "=> true " numEnclosedOf value: '2581' "=> 2 "