Think Twice
IT技術メモ | プログラミングお題のメモ
Created: 2009-05-25 / Updated: 2023-09-05

[お題] Typoglycemia関数の作成


当メモは2009-05-25に投稿されたものを加筆修正し、再掲したものです。
みなさまもお好きな言語で解いてみてくださいね。

目次


お題

Copy
Typoglycemia(タイポグリセミア)とは、単語を構成する文字を並べ替えても、最初と最後の文字が合っていれば読めてしまう現象のことである。

例えば以下の文章は:

こんちには みさなん おんげき ですか? わしたは げんき です。
この ぶんょしう は いりぎす の ケブンッリジ だがいく の けゅきんう の けっか
にんんげ は もじ を にしんき する とき その さしいょ と さいご の もさじえ あいてっれば
じばんゅん は めくちちゃゃ でも ちんゃと よめる という けゅきんう に もづいとて
わざと もじの じんばゅん を いかれえて あまりす。
どでうす? ちんゃと よゃちめう でしょ?
ちんゃと よためら はのんう よしろく

このように読めてしまう:

こんにちは皆さんお元気ですか? 私は元気です。
この文章はイギリスのケンブリッジ大学の研究の結果
人間は文字を認識する時その最初と最後の文字さえ合っていれば
順番は滅茶苦茶でもちゃんと読めるという研究に基づいて
わざと文字の順番を入れ替えてあります。
どうです?ちゃんと読めちゃうでしょ?
ちゃんと読めたら反応よろしく

上記のようにTypoglycemiaを作成するプログラムを書いてください。

補足

元記事では「どう書く」というサイトでの出題に対する回答だったのですが、すでにサイトが閉鎖させてしまっています。残念です。

Groovyで解いてみた

2009-05-25 更新
Copy
source = """\
こんにちは みなさん おげんき ですか? わたしは げんき です。
この ぶんしょう は いぎりす の ケンブリッジ だいがく の けんきゅう の けっか
にんげん は もじ を にんしき する とき その さしいょ と さいご の もじさえ あっていれば
じゅんばん は めちゃくちゃ でも ちゃんと よめる という けんきゅう に もとづいて
わざと もじの じゅんばん を いれかえて あります。
どうです? ちゃんと よめちゃう でしょ?
ちゃんと よめたら はんのう よろしく
"""

println source.readLines()*.split(/\s+/).collect{
    it.collect{ it.size() <= 3 ? it : it.toList().with{
        it.first() +                                            // 最初
        it[1..-2].with{ Collections.shuffle(it); it.join() } + // 真ん中
        it.last()                                               // 最後
    } }.join(' ')
}.join('\n')
出力例
Copy
こちにんは みなさん おんげき でかす? わしたは げんき です。
この ぶしょんう は いりぎす の ケッンブリジ だがいく の けゅきんう の けっか
にんげん は もじ を にしんき する とき その さいしょ と さいご の もじさえ あれっいてば
じんばゅん は めくゃちちゃ でも ちんゃと よめる という けきんゅう に もいとづて
わざと もじの じばゅんん を いれえかて あります。
どうです? ちんゃと よゃめちう でしょ?
ちんゃと よためら はのんう よしろく

参考

参考サイト