自己言及のパズルの答え
id:selvaggioが解けなかったらしいので、Rubyに解かせてみる。
こんな答えが出た。
$ ruby solve.rb 1回目の試行...失敗 2回目の試行...失敗 3回目の試行...失敗 4回目の試行...成功 この文章には 0が1個 1が11個 2が2個 3が1個 4が1個 5が1個 6が1個 7が1個 8が1個 9が1個 含まれています
一応、スクリプトもさらしておく。
Element = Struct.new("Element", :name, :value) def count(elements) counter = Array.new(10,0) elements.each{|e| e.name.to_s.each_byte{|v| counter[v.chr.to_i] += 1 } if e.value e.value.to_s.each_byte{|v| counter[v.chr.to_i] += 1 } end } counter end def solve(elements) counter = count(elements) elements.each{|e| e.value = counter[e.name] } end def valid?(elements) counter = count(elements) elements.each{|e| if counter[e.name] != e.value return false end } return true end elements = [] 0.upto(9){|i| elements.push Element.new(i,nil) } i = 0 loop{ i += 1 print "#i:回目の試行..." solve elements if valid?(elements) then puts '成功' break end puts "失敗" } puts '' puts 'この文章には' elements.each{|e| puts "#e.name:が#e.value:個" } puts '含まれています'