Descrição do Desafio:
Escreva um programa que solicite entrada ao usuário. O usuário digitará Good
ou Bad
. Você não precisa dar suporte a nenhuma outra entrada. Se o usuário entrar Good
, imprima Bad
e vice-versa (para stdout etc).
Notas:
1) Você não pode usar nenhum outro par de duas palavras.
2) Seu programa precisa solicitar e imprimir apenas uma vez.
3) Você não precisa exibir a sequência de prompt.
4) A saída deve aparecer separada da entrada por qualquer meio.
5) Nenhuma função é permitida aceitando o valor e retornando o resultado; O usuário deve interagir com o programa.
Boa sorte!
code-golf
string
interactive
Ishaq Khan
fonte
fonte
Respostas:
Python 3 ,
3231 bytesExperimente online!
Quão?
Testa se a entrada é
'Good'
comparada'G'<input()
.Usa o fato de que em Python
False==0
eTrue==1
para usar o resultado como ostart
índice de uma fatia de'GBoaodd'
usar um indefinidostop
e umstep
de2
com'GBoaodd'[start:stop:step]
.Imprime em STDERR (salvando um byte
exit
no lugar deprint
).fonte
'GoodBad'.strip(input())
um byte mais curto.APL (Dyalog Unicode) , SBCS de 13 bytes
Programa completo que solicita a entrada de stdin e imprime no stdout.
Experimente online!
⍞
prompt para entrada de stdin;Good
ouBad
¯1↓
solte o último caractere (d
);Goo
ouBa
'GooBad'~
multiset subtrai esses caracteres desses;Bad
ouGood
fonte
GooBad
ouGoodBad
?GooBad
, pois adicionar um caractere `` d`` fará com que este post seja 14 bytes.Máquina de Turing, mas muito pior , 405 bytes
Experimente online!
Bem, isso levou um tempo.
EXPLICAÇÃO INACABADA :
fonte
favorite/disliked/"Turing-Machine-But-Way-Worse" is, without a doubt, my new favorite esolang.
bash, 20 bytes
Experimente online!
fonte
8088 Assembly, IBM PC DOS, 25 bytes
Desmontado:
Explicação:
Examina o comprimento da string de entrada (mais o espaço inicial) que o DOS armazena no endereço de memória
80H
e o adicionaAL
(inicialmente0
pelo DOS ). Se houver um número ímpar de1
bits na representação binária do comprimento da string, o sinalizador de paridade da CPU será definido como ímpar e vice-versa. Portanto, o' Bad'
comprimento da string de entrada4
(0000 0100
) é paridade ímpar e a string de entrada' Good'
é5
(0000 0101
) é paridade par.DX
é inicialmente definido para apontar para a string'Good$Bad$'
e, se a paridade for par (o que significa que a entrada foi' Good'
), avance o ponteiro da string por esse comprimento (5
), de modo que agora aponte para'Bad$'
. Se a paridade for ímpar, não faça nada, pois já aponta para'Good$'
. Em seguida, use a API do DOS para exibir uma$
sequência terminada no console.Exemplo:
Faça o download e teste o GOODBAD.COM ou crie a partir do
xxd
dump:fonte
Geléia , 8 bytes
Experimente online!
Um programa completo esperando uma string formatada em Python como argumento
Quão?
fonte
Python 3,
38.37.3433 bytesExperimente online!
exit()
: retorna um código de saída como saída"C">input()
: Verifica se a entrada é maior que a sequênciaC
na ordem alfabéticaand"Good"
: Se o resultado forTrue
, retornará comGood
or"Bad"
: Caso contrário, retorna comBad
fonte
print("C">input()and"Good"or"Bad")
exit(input()[3:]and"Bad"or"Good")
também funciona para a mesma contagem de bytes.C,
3938 bytesExperimente online!
Guardou um byte graças a @tsh.
fonte
main(){puts("Good\0Bad"+getchar()%6);}
38 bytes#include<stdio.h>
?\0
?brainfuck , 72 bytes
Experimente online!
Explicação:,> +++++>,>,>,>,
Leia: "G", 5, "o", "o", "d" ou "B", 5, "a", "d", 0
[<<<< [- <->> --- <] <. >> +. >>. >>>] Se o último caractere não for zero:
Substrato 5 da primeira célula uma vez e da terceira célula três vezes. Célula de incremento 3
Células de saída 1, 3, 5.
<[<<< [- <+ >> +++ <] <. >> - ..>. >>]
Caso contrário, adicione 5 à primeira célula uma vez e à terceira célula três vezes.
Célula de redução 3
Células de saída 1, 3, 3, 4
fonte
Haskell,
3634 bytesExperimente online!
Edit: -2 bytes graças a @cole
fonte
R ,
42373532 bytes-10 graças a Giuseppe e AkselA!
Experimente online!
fonte
"C"
vez do primeiro,"Bad"
como nesta resposta , salvará mais alguns bytes.`if`(readline()>"C","Bad","Good")
uma resposta válida? Eu sou novo neste jogo e suas regras.scan(,"")
vez dereadline()
. Sinta-se livre para vir a golfR , a sala de chat R golfe, se você tiver alguma dúvida específica de R :-)sed ,
21 1613 bytesObrigado @Cowsquack pelas dicas.
Experimente online! Experimente online!Experimente online!TIL
c
irá causar um curto-circuito na análise da linha atual.fonte
c
oferece uma solução menorc
JavaScript 31 bytes
Eu gosto da resposta de Arnauld, mas gostaria que ela aceitasse a entrada do usuário e pudesse ser executada no StackExchange da seguinte maneira:
fonte
Befunge-93 ,
2018 bytesExperimente online!
-2 bytes graças a Jo King
fonte
Ruby , 22 bytes
Experimente online!
fonte
p gets
e por isso tem o mesmo comprimento. (meu comentário original disse que você poderia salvar 2 bytes, mas eu não conta para a impressão do resultado)-p
sinalizador daria a resposta mais eficiente:$_=$_>?F?:Bad:"Good"
são 20 bytes. Experimente online!05AB1E ,
109 bytes-1 byte graças a @Emigna .
Experimente online ou verifique os dois casos de teste .
Explicação:
Veja esta dica 05AB1E meu (seção Como usar o dicionário? ) , Para entender por que
”‚¿‰±”
é"Good Bad"
.fonte
á
.á
que não posso acreditar que não tinha pensado nisso, mas ao mesmo tempo sei que nunca teria pensado nisso. ;) Obrigado! (E sim, eu tinha algumas alternativas 10 bytes também.)”‚¿Bad”IK
é também um 9.Java (JDK) , 124 bytes
Experimente online!
Provavelmente, ainda há espaço para melhorias, mas sou totalmente novo no código do golfe.
fonte
!="Bad"
Ruby,
3028 bytesNão é o golfe, mas eu gosto do abuso de divisão para remover a nova linha à direita e converter em uma matriz em uma chamada.
EDITE -2 bytes graças à sugestão da Value Ink!
fonte
"Good"
ou"Bad"
(com aspas); Não tenho certeza se isso é permitido.puts
imprime cada elemento de uma matriz em uma linha separada. É 3 bytes mais caro do quep
, mas ele se equilibra desde que você remove o arquivo[0]
e salva mais 2 bytes, não precisando mais de parênteses. Experimente online!Linguagem de programação de Shakespeare , 582 bytes
(Espaço em branco adicionado para facilitar a leitura)
Experimente online!
Recebo a primeira letra da entrada com
Open mind
. Então eu preciso determinar o que é. De todos os números entreB
= 66 eG
= 71, meu calculador bruto diz que 66 é o mais curto para escrever (the sum ofa big cat the cube ofa big big cat
), então eu comparo a primeira letra da entrada com 66. A cena que eu continuo imprimindoGood
ou a cena V imprimemBad
.fonte
Retina 0.8.2 , 20 bytes
Experimente online! O link inclui o conjunto de testes. Explicação:
Transformar
Good
emGod
.Transponha as letras
GoaB
com o verso dessa lista, trocandoG
comB
eo
coma
, ou seja, trocandoGod
comBad
.Transformar
God
emGood
.fonte
Stax ,
98 bytesExecute e depure
Essencialmentereplace("BadGood", input, "")
.Multiset xor com "GooBa". Algoritmo copiado literalmente de Luis Mendo
fonte
Excel, 24 bytes
Usando a
<C
sugestão de @ MilkyWay90 .fonte
PHP ,
2623 bytesUm ternário é apenas mais barato:
Experimente online!
Resposta original, 26 bytes
Experimente online!
Ou 21 bytes (mas essa é basicamente a resposta de Arnauld )
Experimente online!
fonte
readline()
é provavelmente mais apropriado do que$argn
.Geléia , 9 bytes
Experimente online!
Explicação
Diferença simétrica multiset entre a entrada e a sequência
“GooBa”
.fonte
PowerShell ,
2220 bytesExperimente online!
-2 bytes graças ao mazzy
fonte
Barril , 22 bytes
fonte
brainfuck , 52 bytes
Experimente online!
Depende de Má ser uma letra menor que Boa, portanto, a última entrada está vazia.
Explicação:
fonte
Boolfuck , 47 bytes
Experimente online!
Usa o fato de que você pode basicamente receber a entrada como bits e inverter certos bits para transformá-la na letra oposta.
Explicação:
fonte
Barril ,
-rt
2017151387 bytes (SBCS)Transpiles para:
É uma porta da resposta 05AB1E. Essencialmente, ele:
"GoodBad"
GoodBad
por nada.-rt
bandeira diz ao Keg para ler os tokens da direita para a esquerda.Histórico de respostas
Transpiles para o seguinte:
Explicação
fonte
Carvão vegetal , 13 bytes
Experimente online!
Explicação:
fonte