simplefunge - ошибка NilClass, даже когда вершина стека не равна нулю - PullRequest
0 голосов
/ 21 декабря 2018

КОД:

91+I-v
     V
     O
     @

Я создал этот код для отправки PPCG (Programming Puzzles and Code Golf), но он не работает.

Ошибкакод, который он возвращает, равен /opt/simplefunge/simplefunge.rb:53:in <code><main>': undefined method ord 'для nil: NilClass (NoMethodError)

Есть ли какое-либо решение для этого?

1 Ответ

0 голосов
/ 03 января 2019

Ваш код ожидает ввода от stdin с помощью команды I.Если вы не предоставите ввод, tio.run предоставит пустой список.Сообщение об ошибке говорит вам о том, что интерпретатор не смог преобразовать пустой ввод (nil) в числовое значение с помощью операции ord, которая определена для символов.

Это может быть локально воспроизведено как:

$ echo -n | ruby simplefunge.rb test.funge 
Traceback (most recent call last):
simplefunge.rb:53:in `<main>': undefined method `ord' for nil:NilClass (NoMethodError)

Чтобы решить эту первую проблему, предоставьте ввод.

Вы получите аналогичную ошибку от команды O в вашем коде, так как предыдущая операция V выводит вас за пределы стека, снова приводя к попытке применить символьную операцию к nil, когда вы пытаетесь напечатать стекзначение как символ:

simplefunge.rb:57:in `<main>': undefined method `chr' for nil:NilClass (NoMethodError)
...