問題の範囲からのすべての文字の数を探します3 + 3 + 5 + 4 + 4 =合計19文字。 1から1000までのすべての数字が単語で書き出された場合、いくつの文字が使用されますか?プロジェクトオイラータスク17は、数字
私の解決策:他の質問に@Arifにより、privided
require 'humanize'
arr, total = [], 0
(1..1000).to_a.map(&:humanize).each {|x| arr << x.delete(" ").delete("-")}.map {|y| total += y.length }
p total
他の解決策は、(プロジェクトオイラーによる)正しい答えを与える:
p (1..1000).to_a.map(&:humanize).join.tr(" -", "").size
私の解決策が間違っているのはなぜ?私の知る限り、これら2つの実装は同じ出力を与える必要があります...
編集: もう1つ奇妙なことが見つかりました。 私は20と実装までの任意の番号に1000を変更した場合は、次のようになります。
(1..20).to_a.map(&:humanize).each {|x| arr << x.delete(" ").delete("-")}.map {|y| total += y.length }
p (1..20).to_a.map(&:humanize).join.tr(" -", "").size
は、私は同じ答えを受け取る.....?何?
に'to_a'も削除できます。 –
@ sagarpandya82はい、実際、この部分はコピー貼り付けされただけです。 Thxは、元の回答を可能な限り問題の近くに残すために「より良い」部分を更新します。 – mudasobwa