前提・実現したいこと
Aizu Online Judgeにて提出したコードが、提出先の環境では動くのに対して、ローカルで実行するとエラーを吐く。
Paiza.ioを利用した場合でも同様のエラーが発生。
具体的には入力値を受け取る際のsplit
メソッドが要因。
記述や処理の順番を前後するなどすると消えるエラーではあるが、今回質問させて頂きたい内容は、なぜpaiza.ioやlocal環境ではエラーが発生してしまうのか。
また、何故エラーが出ているにも関わらず、Aizu Online Judgeに提出した際には問題なく通過するのか?
加えてlocal環境で, 作成したコードを実行する際にフリーズしてしまっている原因も宜しければご教授お願いします。
解決しました。エラーが出ているにも関わらずプログラムの処理は期待通りに実行されているのは、どういうことでしょう・・?
発生している問題・エラーメッセージ
terminal
1#paiza.io かつ atom-runnerでの実行結果 2Main.rb:2:in `block in <main>': undefined method `split' for nil:NilClass (NoMethodError) 3 from Main.rb:1:in `loop' 4 from Main.rb:1:in `<main>'
該当のソースコード
ruby
1# paiza.ioでのコード 2loop do 3 x=gets.split(" ").map(&:to_i) 4 if x[0]==0 and x[1]==0 5 break 6 end 7 puts x.sort.join(" ") 8end
ruby
1#File.open('text.txt') do 修正 2 loop do 3 x = gets.split.map(&:to_i) 4 break if (x[0] == 0) && (x[1] == 0) 5 6 puts x.sort.join(' ') 7end 8#end 修正
txt
10 1 21 0 310 10 45758 6838 57515 113 65627 1051 77419 3010 84086 6212 92767 2749 102060 9084 117543 2225 121183 5089 135566 5137 144978 6966 15311 495 1654 1367 173145 7031 185736 9882 198505 524 202102 8394
試したこと
terminalにて
ruby Sample.rb
を実行=>何も変化なし。ctr+C
で抜け出すと以下のエラー
terminal
1^CTraceback (most recent call last): 2 6: from Sample.rb:1:in `<main>' 3 5: from Sample.rb:1:in `open' 4 4: from Sample.rb:2:in `block in <main>' 5 3: from Sample.rb:2:in `loop' 6 2: from Sample.rb:3:in `block (2 levels) in <main>' 7 1: from Sample.rb:3:in `gets' 8Sample.rb:3:in `gets': Interrupt
=> ruby Sample.rb < text.txt
とすることで解決。結果も正しく表示されたが・・
terminal
154 1367 23145 7031 35736 9882 4524 8505 52102 8394 6Traceback (most recent call last): 7 2: from Sample.rb:2:in `<main>' 8 1: from Sample.rb:2:in `loop' 9Sample.rb:3:in `block in <main>': undefined method `split' for nil:NilClass (NoMethodError)
期待通りの処理を実行しているが、エラーは引き続き出ている。これはどういうことでしょうか・・?
補足情報(FW/ツールのバージョンなど)
Mac OS
Ruby 2.5.1
Atom editor
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/02 06:41