単語のシャッフル
30分プログラム、その576。単語をシャッフルしてみよう。
人間は、単語の最初と最後さえ合っていれば、あとの順番はめちゃくちゃでもいいらしいです。
こちにんは みさなん おんげき ですか? わしたは げんき です。 この ぶんょしう は いりぎす の ケブンッリジ だがいく の けゅきんう の けっか にんんげは たごんを にしんき する ときに その さしいょ と さいご の もさじえ あいてっれば じばんゅん は めくちちゃゃ でも ちんゃと よめる という けゅきんう に もづいとて わざと もじの じんばゅん を いかれえて あまりす。 どでうす? ちんゃと よゃちめう でしょ?
これおもしろい!というわけで、単語をシャッフするスクリプトを書いてみた。
使い方
$ perl shuffle.pl hoge hgoe $ perl shuffle.pl こんにちは みなさん おげんき ですか こんちには みさなん おげんき ですか
ソースコード
#! /usr/bin/perl # -*- mode:perl; coding:utf-8 -*- # # shuffle.pl - # # Copyright(C) 2009 by mzp # Author: MIZUNO Hiroki / mzpppp at gmail dot com # http://howdyworld.org # # Timestamp: 2009/05/05 14:19:54 # # This program is free software; you can redistribute it and/or # modify it under MIT Lincence. # use strict; use warnings; use Data::Dumper; use List::Util qw(shuffle); use Encode; use utf8; sub word_shuffle($) { my ($str) = @_; $str =~ s{\b(\S)(\S*)(\S)\b}{ $1.join('',shuffle(split(//,$2))).$3 }ge; $str; } my $s = decode 'utf-8',join(' ',@ARGV); print encode('utf-8', word_shuffle($s)),"\n";