Описание задачи:
Напишите программу, которая запрашивает у пользователя ввод. Пользователь введет Good
или Bad
. Вам не нужно поддерживать какой-либо другой ввод. Если пользователь входит Good
, распечатайте Bad
и наоборот (на стандартный вывод и т. Д.).
Примечания:
1) Вы не можете использовать любую другую пару из двух слов.
2) Ваша программа должна спросить и распечатать только один раз.
3) Вам не нужно отображать строку приглашения.
4) Выход должен казаться отделенным от входа любым способом.
5) Запрещается принимать функцию и возвращать результат; Пользователь должен взаимодействовать с программой.
Удачи!
code-golf
string
interactive
Исхак Хан
источник
источник
Ответы:
Python 3 ,
3231 байтПопробуйте онлайн!
Как?
Проверяет, является ли вход
'Good'
путем сравнения'G'<input()
.Использует тот факт , что в Python
False==0
иTrue==1
использовать результат в качествеstart
индекса среза с'GBoaodd'
использованием неопределенногоstop
иstep
из2
с'GBoaodd'[start:stop:step]
.Печать в STDERR (сохранение байта
exit
вместоprint
).источник
'GoodBad'.strip(input())
это на байт короче.APL (Dyalog Unicode) , 13 байтов SBCS
Полная программа, которая запрашивает ввод от стандартного ввода и печатает на стандартный вывод.
Попробуйте онлайн!
⍞
запрос ввода от stdin;Good
илиBad
¯1↓
удалить последний символ (d
);Goo
илиBa
'GooBad'~
мультимножество вычитает эти символы из них;Bad
илиGood
источник
GooBad
илиGoodBad
?GooBad
, так как добавление символа `` `d`` сделает этот пост 14 байтов.Машина Тьюринга, но намного хуже , 405 байтов
Попробуйте онлайн!
Ну, это заняло некоторое время.
Незаконченное объяснение :
источник
favorite/disliked/"Turing-Machine-But-Way-Worse" is, without a doubt, my new favorite esolang.
Баш, 20 байт
Попробуйте онлайн!
источник
Сборка 8088, IBM PC DOS, 25 байтов
разобранное:
Объяснение:
Просматривает длину входной строки (плюс начальный пробел), которую DOS хранит по адресу памяти
80H
, и добавляет ееAL
(изначально0
в DOS ). Если1
в двоичном представлении длины строки присутствует нечетное число битов, флаг четности ЦП устанавливается на нечетное, и наоборот. Таким образом , входной строки' Bad'
длины4
(0000 0100
), является нечетность и входная строка' Good'
является5
(0000 0101
) даже на четность.DX
изначально установлен для указания на строку'Good$Bad$'
, и если четность четна (что означает, что ввод был' Good'
), передвиньте указатель строки на эту длину (5
), так что теперь он указывает на'Bad$'
. Если четность нечетна, ничего не делайте, поскольку она уже указывает на'Good$'
. Затем используйте DOS API для отображения$
завершенной строки на консоли.Пример:
Скачайте и протестируйте GOODBAD.COM или соберите из
xxd
дампа:источник
Желе , 8 байт
Попробуйте онлайн!
Полная программа ожидает строку в формате Python в качестве аргумента
Как?
источник
Python 3,
38373433 байтаПопробуйте онлайн!
exit()
: возвращает код выхода в качестве вывода"C">input()
: Проверяет, больше ли ввод, чем строкаC
в алфавитном порядкеand"Good"
: Если результат естьTrue
, то возвращается сGood
or"Bad"
: В противном случае возвращается сBad
источник
print("C">input()and"Good"or"Bad")
exit(input()[3:]and"Bad"or"Good")
также работает для того же количества байтов.C
3938 байтПопробуйте онлайн!
Сохранено один байт благодаря @tsh.
источник
main(){puts("Good\0Bad"+getchar()%6);}
38 байт#include<stdio.h>
?\0
?мозговой отрыв , 72 байта
Попробуйте онлайн!
Объяснение:,> +++++>,>,>,>,
Прочитайте: «G», 5, «o», «o», «d» или «B», 5, «a», «d», 0
[<<<< [- <- >> --- <] <. >> +. >>. >>>] Если последний символ не равен нулю:
Вычтите 5 из первой ячейки один раз и из третьей ячейки трижды. Инкремент ячейка 3
Выходные ячейки 1, 3, 5.
<[<<< [- <+ >> +++ <] <>> -.. ..> >>]
В противном случае добавьте 5 к первой ячейке один раз и к третьей ячейке трижды.
Ячейка декремента 3
Выходные ячейки 1, 3, 3, 4
источник
Haskell,
3634 байтаПопробуйте онлайн!
Редактировать: -2 байта благодаря @cole
источник
R ,
42373532 байта-10 спасибо Джузеппе и АкселА!
Попробуйте онлайн!
источник
"C"
вместо первого,"Bad"
как в этом ответе , сохранит еще пару байтов.`if`(readline()>"C","Bad","Good")
правильного ответа? Я новичок в этой игре и ее правилах.scan(,"")
вместоreadline()
. Не стесняйтесь приходить в golfR , чат для гольфа R, если у вас есть какие-либо специфические для R вопросы :-)sed ,
21 1613 байтСпасибо @Cowsquack за подсказки.
Попробуйте онлайн! Попробуйте онлайн!Попробуйте онлайн!TIL
c
закоротит разбор текущей строки.источник
c
предлагает более короткое решениеc
JavaScript 31 байт
Мне нравится ответ Арно, но я хотел бы, чтобы он принимал пользовательский ввод и мог быть запущен в StackExchange следующим образом:
источник
Befunge-93 ,
2018 байтПопробуйте онлайн!
-2 байта благодаря Джо Кингу
источник
Рубин , 22 байта
Попробуйте онлайн!
источник
p gets
и поэтому она такой же длины. (мой оригинальный комментарий сказал, что вы можете сохранить 2 байта, но я не учел распечатывать результат)-p
флага даст наиболее эффективный ответ:$_=$_>?F?:Bad:"Good"
это 20 байтов. Попробуйте онлайн!05AB1E ,
109 байтов-1 байт благодаря @Emigna .
Попробуйте онлайн или проверьте оба теста .
Объяснение:
Посмотрите эту подсказку 05AB1E (раздел Как пользоваться словарем? ) , Чтобы понять, почему
”‚¿‰±”
это так"Good Bad"
.источник
á
.á
я не могу поверить, что не думал об этом, но в то же время я знаю, что никогда бы не подумал об этом. ;) Благодарность! (И да, у меня также было несколько 10-байтовых альтернатив.)”‚¿Bad”IK
также 9.Java (JDK) , 124 байта
Попробуйте онлайн!
Скорее всего, есть еще возможности для совершенствования, но я совершенно новичок в коде в гольф.
источник
!="Bad"
Рубин,
3028 байтНе в гольфе, но мне нравится злоупотребление сплитом для удаления завершающего перевода строки и преобразования в массив за один вызов.
РЕДАКТИРОВАТЬ -2 байта благодаря предложению Value Ink!
источник
"Good"
или"Bad"
(с кавычками); Я не уверен, что это разрешено.puts
печатает каждый элемент массива в отдельной строке. Это на 3 байта дорожеp
, но оно выравнивается, поскольку вы вынимаете[0]
и сохраняете еще 2 байта, больше не нуждаясь в паренах. Попробуйте онлайн!Язык программирования Шекспира , 582 байта
(Пробелы добавлены для удобства чтения)
Попробуйте онлайн!
Я получаю первую букву ввода с
Open mind
. Тогда мне нужно определить, что это такое. Из всех чисел отB
= 66 доG
= 71 мой брутфорсер говорит, что 66 - самое короткое для записи (the sum ofa big cat the cube ofa big big cat
), поэтому я сравниваю первую букву ввода с 66. Сцена I продолжает печататьGood
, или Сцена V печатаетBad
.источник
Сетчатка 0.8.2 , 20 байт
Попробуйте онлайн! Ссылка включает тестовый набор. Объяснение:
Превратись
Good
вGod
.Транспонировать буквы
GoaB
с обратной стороны этого списка, таким образом, обмениваясьG
сB
иo
сa
, то есть обмениваясьGod
сBad
.Превратись
God
вGood
.источник
Stax ,
98 байтЗапустите и отладьте его
По сутиreplace("BadGood", input, "")
.Мультисет XOR с "GooBa". Алгоритм дословно скопирован с Луиса Мендо
источник
Excel, 24 байта
Используя предложение @ MilkyWay90
<C
.источник
PHP ,
2623 байтаТроица просто дешевле:
Попробуйте онлайн!
Оригинальный ответ, 26 байт
Попробуйте онлайн!
Или 21 байт (но это в основном ответ Арно )
Попробуйте онлайн!
источник
readline()
скорее всего, уместнее, чем$argn
.Желе , 9 байт
Попробуйте онлайн!
объяснение
Мультисимметричная разность между входом и строкой
“GooBa”
.источник
PowerShell ,
2220 байтПопробуйте онлайн!
-2 байта благодаря маззи
источник
Кег , 22 байта
источник
брейкфук , 52 байта
Попробуйте онлайн!
Полагается, что «Плохо» на одну букву короче «Хорошо», поэтому последний ввод пуст.
Объяснение:
источник
Boolfuck , 47 байтов
Попробуйте онлайн!
Использует тот факт, что вы можете просто принять входные данные как биты, а затем инвертировать определенные биты, чтобы превратить его в противоположную букву.
Объяснение:
источник
Кег ,
-rt
2017151387 байт (SBCS)Транспортирует к:
Это порт ответа 05AB1E. По сути, это:
"GoodBad"
GoodBad
ничего.-rt
Флаг говорит бочонок читать лексемы справа налево.История ответов
Транспортирует к следующему:
объяснение
источник
Древесный уголь , 13 байт
Попробуйте онлайн!
Объяснение:
источник