ナイツ関数(ボケの方)
Posted feedbacks - Smalltalk
Squeak Smalltalk で。
単語のリストから文字数が似ていて最初と最後の文字が一致するものをピックアップし、該当がないときは元の単語を、複数ある時はランダムにチョイスして出力しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | | in wordList file |
in := 'ドウカク org ヘ ヨウコソ
コノ サイト ハ ダサレタ オダイ ヲ イカニ トクカ キソイアウ
プログラマ ノ タメノ コロシアム デス
トウコウ ヲ タメシテ ミタイ カタ ハ テスト
トリアエズ ナガメテ ミタイ カタ ハ ゲンゴ ノ イチラン ガ オススメ デス'.
wordList := OrderedCollection new.
#('25_10' '40_25' '55_40' '70_55') do: [:range |
file := FileStream fileNamed: 'fam', range, '.txt'.
file converter: (TextConverter newForEncoding: 'sjis').
file wantsLineEndConversion: true.
[file atEnd] whileFalse: [wordList addAll: (file nextLine subStrings: String tab)].
file close].
World findATranscript: nil.
in linesDo: [:line |
Transcript cr.
(line subStrings: ' ')
do: [:each |
| foundWords |
foundWords := wordList select: [:word |
(word size - each size) abs <= 1 and: [
word first = each first and: [word last = each last]]].
foundWords ifEmpty: [foundWords := foundWords copyWith: each].
Transcript show: foundWords atRandom]
separatedBy: [Transcript space]]
"=>
ドクヤク org ヘ ヨワミソ
コノ サトビト ハ ダサレタ オトガイ ヲ イトコニ トシワカ キュウロウ
プラズマ ノ タカドノ コロシアム デス
トクユウ ヲ タメシテ ミタイ カタ ハ テナント
トキワズ ナツバテ ミタイ カタ ハ ゲンゴ ノ イチミン ガ オツトメ デス "
|


syat
#8549()
[
Other
]
Rating-2/2=-1.00
(ナベアツ算を見てて思いつきました)
入出力の方法は標準入出力や引数・戻り値など、扱いやすい方法でかまいません。
文字単位でランダムに間違えても面白くないので、単語のリストから似た単語の候補を探すようにしてください。英単語でもOKです。単語のリストは参考ページからダウンロードしたものを加工して利用すると良いと思います。(4000個あります)
結果がつまらなくても構いませんが、面白いボケをうむ工夫があると良いです。
※人が考えたボケは求めてませんよ!
入力の例として「どう書く?org」の前文をお借りしました。ご自分でヤホーで調べたりして手ごろな文章を見つけて下しあ。
see: 日本語単語リスト
Rating-2/2=-1.00-0+
[ reply ]