Я часто забываю, что я хотел сказать, когда учитель призывает меня говорить. Можете ли вы сделать мне инструмент для решения этой проблемы?
Требования:
- Программа должна зацикливаться следующим образом:
- Во-первых, взять на вход
- Если ввод пуст, выведите последний сохраненный вопрос.
- В противном случае сохраните ввод как вопрос.
Ноты:
- Ввод никогда не будет пустым, если нет сохраненных вопросов.
Пояснение: программе не нужно хранить несколько вопросов. Первоначально я хотел, чтобы он хранился несколько раз, но я изменил его после того, как многие люди неправильно поняли вопрос.
Помните, это код-гольф , поэтому выигрывает код с наименьшим количеством байтов.
Ответы:
Perl
131714 +1 = 15 байт+1 за
-n
флаг (сэкономлено 4 байта благодаря @Dada)Пока ввод не равен возврату каретки, он сохраняет вход в
$;
. Если он равен возврату каретки, он печатает то, что уже есть$;
.Это предполагает, что все входные данные могут быть охарактеризованы как вопросы, даже если они грамматически не являются таковыми.
источник
ne
вместоeq
(сейчас это не работает)././
вместо$/ne$_
;-)05AB1E,
121110 байтСпасибо @daHugLenny и @Adnan за 1 байт!
Спасибо @Emigna за 1 байт!
источник
®
и©
наX
иU
, вам не понадобится обратный слеш.Haskell, 49 байтов
Как это работает: начните с
g ""
. Параметромs
функцииg
является вопрос в магазине.g
читает следующую строку из stdin и передает ее (а также s) в#
. Если строка пуста,#
печатает магазин иg
снова звонит . Если строка не пустая,g
вызывается со строкой в качестве нового хранилища.источник
JavaScript,
363431 байтБесконечный цикл постоянно запрашивает ввод и сохраняет его в
b
. Если входное значение не пустое, оно затем сохраняется, вa
противном случаеa
печатается значение.Сохранено 2 байта благодаря @ETHproductions
источник
1
, и другой, перейдяb?a=b:alert(a)
в последний раздел цикла for (то естьfor(a=0;;b?a=b:alert(a))b=prompt()
)a=0
не нужно ни. Поскольку входные данные могут быть пустыми только при наличии сохраненных вопросов, на нихa
не будут ссылаться, если они не были назначены.Mathematica, 44 байта
Полная программа. Символ Unicode имеет значение U + 221E INFINITY для
\[Infinity]
.источник
Python 3, 31 байт
Попробуйте!
-1 байт благодаря Flp.Tkc
источник
сетчатый, 12 байтов
Попробуйте онлайн!
объяснение
источник
Пайк, 6 байт
Попробуй это здесь!
источник
Python3 - 49 байт
источник
NameError: name 'b' is not defined
b=input()
. Спасибо!Python 3, 34 байта
источник
Python 3, 60 байт
источник
CMD, 37 байт
К сожалению
set
, не принимает пустой ввод :(в именах файлов
c.cmd
илив любом файле. Рабочая (используйте
-
как пустую):источник
set/p
никогда не будет делать переменную пустой, поэтому по крайней мере вам нужноset a=
в первой строке; Также я думаю, что вы имеете в видуset b=%a%
.APLX, 19 байт
Объяснение:
источник
C
7363 байтаТолько использует 1 буфер и один символ для обработки логики. Если пользователь ничего не вводит, только первый символ в буфере перезаписывается
'\0'
, в этом случае он восстанавливаетсяx
и печатается, в противном случае скопируйте первую буквуx
для последующего использования.Предыдущий код:
источник
Ява 7,
189187178 байт ..-9 байтов, используя
new java.util.Scanner
напрямую, благодаря @cliffroot .Вероятно, в первый раз я использовал
do-while
в соревновании по Codegolf ..Когда функции разрешены вместо программ, это 135 байтов (все еще во много раз больше, чем большинство других ответов ..)
источник
void c(){for(String s="",x;(x=new java.util.Scanner(System.in).nextLine())!=null;)if(x.isEmpty())System.out.println(s);else s=x;}
for
илиwhile
где-нибудь? .. Что(x=new java.util.Scanner(System.in).nextLine())!=null;)
?void c(){for(String s="",x;for(x=new java.util.Scanner(System.in).nextLine())!=null;)if(x.isEmpty())System.out.println(s);else s=x;}
и это на самом деле на 1 байт больше, чем версия сdo-while
is -void c(){String s="",x;do{x=new java.util.Scanner(System.in).nextLine();if(x.isEmpty())System.out.println(s);else s=x;}while(1>0);}
sed, 10 байт
Объяснение:
Приятно видеть экзотерический (то есть "не эзотерический") язык, связанный с некоторыми языками игры в гольф!
источник