#perl -le 'sub prime {if ((1 x $_[0]) !~ /^(11+)\1+$/) {return 1;} else {0;}} for (1..40) {$n=$_**2+$_+41; print "$_\t$n\t",prime($n);}' # ?
2011-05-11 22:50:25#perl -le 'join("0", map { 1 x $_; } @ARGV) =~ /^(1+)\1*(0\1+)*$/; print length($1);' 42 98 28 # 14 ← 最大公約数 GCD を計算する正規表現 regexp.
2011-05-12 21:41:51#ruby -e 'ARGV.collect{|x|"1"*x.to_i}.join("0") =~ /^(1+)\1*(0\1+)*$/; puts $1.length;' 42 98 28 # 14 ← 最大公約数 GCD を計算する正規表現 regexp.
2011-05-12 21:54:54@shz_fsmy #ruby -e 'puts /^(1+)\1*(0\1+)*$/.match(ARGV.collect{|x|"1"*x.to_i}.join("0"))[1].length;' 42 98 28 # 14 ← このようにも書けるのかな.
2011-05-14 12:46:00#perl -le '$s="1"x$ARGV[0]; while (1) {print $s; $s=~/^((1?)((1+)\4))$/; last unless $3; $s=$2?$2.$1x3:$4;}' 7 # Collatz 予想
2011-10-06 23:08:46#ruby -e 's="1"*$*[0].to_i; loop {puts s; /^((1?)((1+)\4))$/=~s; break unless $3; s=($2=="1")?$2+$1*3:$4;}' 7 # Collatz 予想
2011-10-06 23:14:05@shz_fsmy #perl -le '$s="1"x$ARGV[0]; while (1) {print $s; last if $s=~/^1$/; $s=~s/^(1(1+)\2)$/1\1\1\1/ && next; $s=~s/^(1+)\1$/\1/;}' 7
2011-10-07 19:33:05@shz_fsmy #ruby -e 's="1"*7; loop {puts s; break if s=~/^1$/; s.sub!(/^(1(1+)\2)$/,'\''1\1\1\1'\'') &&next; s.sub!(/^(1+)\1$/,'\''\1'\'');}'
2011-10-07 19:39:03正規表現の lookahead はいいけど lookbehind が, Perl 5.8.8 で期待する通りに動作しない気が, Ruby 1.8.6 では使えない気がします.
2011-10-09 20:35:36正規表現の lookbehind (?<=...) と (?<!...) は, ... の部分が固定長でないと使えないようなので, while ループを回しました. さて, 140 字で書けるかな.
2011-10-20 20:57:22#perl -le '$_=1x$ARGV[0];while(1){print;s/(.*?)((1+)1(,1)*)$/\2/||last;($s,$t)=($1,$3);s/,//g;1 while s/($t+?)(1+)/\1,\2/;$_=$s.$_;}' 8
2011-10-20 21:35:36#perl -le '$_=1x$ARGV[0]; while (1) {print; s/(.*?)((1+)1(,1)*)$/\2/ || last; $s=$1; $t=$3; s/,//g; 1 while s/($t)1/$t,1/; s/^/$s/;}' 8
2011-10-21 19:39:11正規表現で自然数の分割を列挙する http://t.co/gssBKnCQ を, http://t.co/PV4OpZwc と書き直してみました.
2011-10-21 19:44:21@shz_fsmy その後に | perl -e 'undef $/; $_=<>; s/(?<=\n)(?=1)/\n/g; s/,/\n/g; s/(?<=1)(?=1)/ /g; print;' を付け加えると, Young 図形が見えます.
2011-11-03 17:19:34#perl -le '$m=1x$ARGV[0]; $n=1; l: while ($m=~/1$n/) {$n=~s/^/1/; for (@p) {next l if $n=~/^($_)+$/;} push @p,$n;} print for @p;' 80 # までの素数
2011-10-27 20:11:05#perl -le '$_="1"x$ARGV[0]; $n="1"x$ARGV[1]; s/$/$n/; print; print length;' 19 4 # の和
2011-10-29 17:35:05#perl -le '$_="1"x$ARGV[0]; $n="1"x$ARGV[1]; s/$n// || die; print; print length;' 19 4 # の差
2011-10-29 17:39:05#perl -le '$_="1"x$ARGV[0]; $n="1"x$ARGV[1]; s/1/$n/g; print; print length;' 19 4 # の積
2011-10-29 17:44:05#perl -le '$_="1"x$ARGV[0]; $n="1"x$ARGV[1] || die; s/((?:$n)*)1*/$1/; s/$n/1/g; print; print length;' 19 4 # の商
2011-10-29 17:49:05#perl -le '$_="1"x$ARGV[0]; $n="1"x$ARGV[1] || die; s/(?:$n)*//; print; print length;' 19 4 # の剰余
2011-10-29 17:52:05#perl -le '$n="1"x$ARGV[0]; while ($n=~/$s/) {s/$/1/; $s=$_; $s=~s/1/$s/g;} s/1//; print; print length;' 76 # の平方根
2011-10-29 17:57:05#perl -le '$_="1"x$ARGV[0]; $n="1"x$ARGV[1] || die; /($n)*/; $_=$&; $r=$'\''; s/$n/1/g; print "$_ $r\n",length," ",length $r;' 19 4 # の商と剰余
2011-10-30 16:43:05