É sexta-feira ... então vamos jogar golfe! Escreva um código que determine a pontuação do jogador em um buraco em uma partida de golfe. O código pode ser uma função ou um programa inteiro. Como o gênero sugere, o código mais curto vence.
Entrada (parâmetros ou stdin, sua escolha):
- Um número inteiro representando o par do furo, com garantia entre 3 e 6
- Um número inteiro representando a pontuação do jogador, garantido entre 1 e 64
Saída (impressão em stdout ou retorno, nova linha final permitida, mas não obrigatória, sua escolha):
- se a pontuação for 1, digite "Hole in one"
- se pontuação == par - 4 e par> 5, emita "Condor"
- se pontuação == par - 3 e par> 4, produz "Albatroz"
- se pontuação == par - 2 e par> 3, produza "Eagle"
- se pontuação == par - 1, saída "Birdie"
- se pontuação == par, gerar "Par"
- se pontuação == par + 1, saída "Bogey"
- se pontuação == par + 2, produz "Bogey duplo"
- se pontuação == par + 3, produz "Bogey triplo"
- se pontuação> par + 3, emita "Haha, seu perdedor"
EDIT Parabéns a Dennis por ter a resposta mais curta!
Respostas:
Geléia , 61 bytes
Experimente online!
fundo
Isso usa a compactação estática do dicionário de Jelly. Você pode encontrar um compressor aqui . Deste jeito,
e
assim como
e
são equivalentes.
Como funciona
fonte
PHP 5.3+,
Versão sem aviso prévio,173167166159 159156151127121 bytes139137 bytesDefina
vista expandida$s
as$p
variáveis core e ar antes doecho
e você está fora.Edições
-6: Não armazenando a matriz, apenas chamando, se necessário.
-1: Virando o ternário.
-7: O menor
$s-$p
com$s>1
é-4
, entãomax()
não é necessário, desde4+$s-$p >= 0
.-3
Array -> explode()
:, obrigado CoolestVeto!-5:
StringCheatyliteralindefinida constante mais$r[-1] -> false
, obrigado Ismael Miguel!-24: Mudando de uma
explode()
função para aprintf
/%s
setup, com alguns ajustes, mais graças a Ismael Miguel pela mudança de direção.-6: Swerve , estamos de volta
echo
!fonte
$b="Bogey";
por$b=Bogey;
para salvar 2 bytes. Além disso, substitua o seu$s-1? ... : ...;
por umecho ... ?: ...;
. Aqui está a versão longa, com 151 bytes:function g($s,$p){$b=Bogey;echo explode("-","Condor-Albatross-Eagle-Birdie-Par-$b-Double $b-Triple $b-Haha you loser")[min(4+$s-$p,8)]?:"Hole in one";}
printf([Condor,Albatross,Eagle,Birdie,Par,'%s','Double %s','Triple %s','Haha you loser'][min(4+$argv[1]-$argv[2],8)]?:'Hole in one',Bogey);
. Basicamente: Removida a declaração da função, removidaexplore
, removida as aspas, usada uma matriz e usada$argv
. O código final tem 139 bytes.05AB1E ,
9190 bytesCódigo:
Explicação:
Parte 1:
Parte 2:
É o mesmo que
"Condor Albatross Eagle Birdie Par 0Bogey Double0Bogey Triple0Bogey"
usar compactação e interpolação de cadeias. Em seguida, dividimos os espaços usandoð¡
.Parte 3:
Descobriu muitos bugs, usa a codificação CP-1252 .
Experimente online!
fonte
Vitsy, 131 bytes
Explicação:
Isso funciona descobrindo qual é a pontuação em relação ao par e, em seguida, executando diferentes linhas (e ganhando diferentes strings).
Experimente Online!
Modo verboso (para cocô e risadinhas):
fonte
JavaScript (ES6),
125124 bytesAtribua a uma variável
f=p=>s=>
, por exemplo , em seguida, chame-a assim:f(6)(2)
Par primeiro e depois marque.Pode ser encurtado combinando os
"Bogey"
s.fonte
",Double ,Triple ".split`,`[k-1]+"Bogey"
ondek=s-p
.LittleLua - 160 bytes (não competitivo)
Estou relativamente certo de que fiz isso certo.
Aceita dois números inteiros, par e pontuação do jogador.
A versão do Little Lua que eu usei para fazer isso foi carregada após o lançamento deste desafio, mas não foi editada posteriormente. É relativamente óbvio a partir do código que nada foi adicionado para simplificar esse desafio
LittleLua Info:
Quando estiver satisfeito com os recursos internos e a funcionalidade de Little Lua, a fonte estará disponível juntamente com uma infopage.
LittleLua V0.02
fonte
Mouse-2002 ,
223207 bytesA remoção de comentários provavelmente ajudaria ...
Ungolfed:
fonte
bash,
150136 bytesExecução de teste:
Agradecimentos a Dennis por 14 bytes!
fonte
Python 2,
186179158 bytesEDIT 1: adicionada a caixa "hole in one" ausente ...
EDIT 2: extraiu alguns bytes (graças ao tac)
fonte
4
eelse
print
e{
, e se você usar um ponto e vírgula para colocar oa=
eprint
na mesma linha, você pode raspar um byte de espaço em brancoHaskell - 131 bytes (contando nova linha)
lines
é a única maneira em que posso pensar em jogar golfe em uma lista de strings que precisam conter espaços com acesso apenas paraPrelude
ficar presos a delimitadores de dois caracteres.Ainda assim, Haskell não costuma ser tão competitivo (pelo menos contra os idiomas gerais).
fonte
import
qualquer coisa que você gosta, não apenas os builtinsPython 2.7, 226 bytes
Difícil de criar um código python curto quando você está atrasado para a festa, o melhor que eu conseguia pensar.
fonte
[print r for r in l if r]
C, 198 bytes
fonte
Japonês, 97 bytes
Contém vários não imprimíveis. Teste online!
Como funciona
fonte
Python 2.7.2, 275 bytes
Ungolfed / explicou:
Minha segunda resposta, ironicamente, ambas estão em Python. Dicas de golfe apreciadas!
fonte
b
.int
automaticamente.Python 2,
302284 bytesSe o espaço em branco à esquerda fosse permitido, seriam 282 bytes:
fonte