Bem-vindo, corajoso jogador de golfe! Hoje você estará no meio de uma grande batalha entre um duende e um elfo!
goblin attacks elf!
elf dodges!
elf attacks goblin!
elf hits goblin for 13 damage!
goblin has 37 health left.
goblin attacks elf!
goblin hits elf for 1 damage!
elf has 49 health left.
elf attacks goblin!
elf hits goblin for 19 damage!
goblin has 18 health left.
goblin attacks elf!
goblin hits elf for 26 damage!
elf has 23 health left.
elf attacks goblin!
elf hits goblin for 20 damage!
goblin has been slain!
O desafio
Seu desafio é simular uma batalha, como a anterior. Você receberá informações neste formulário:
creatureName health strength defense accuracy agility
Por exemplo, a batalha entre o duende e o elfo seria:
goblin 50 40 35 3 2 elf 50 35 30 4 5
A primeira e a segunda criaturas alternam ataques.
- Imprimir 'criatName ataca outroCreatureName!'
- Verifique se a criatura se esquiva. A criatura se esquivar de um ataque se (sua agilidade vezes o rand () dividido por 2) for maior que (a precisão do atacante vezes o rand ()).
- Se a criatura se esquivar, imprima 'criatName esquiva!'
- Caso contrário, calcule o dano causado subtraindo (a força do atacante vezes rand ()) e (a defesa do defensor vezes rand () dividido por 2). O dano mínimo é 1. Imprima 'nome da criatura atinge outro nome da criatura por (x) dano!' Em seguida, imprima 'criaturaName com (x) saúde restante'. a menos que a saúde da criatura seja 0 ou menos, nesse caso ...
- Se a saúde da criatura for 0 ou menos, imprima 'criatNameNome foi morto!' e encerre o programa.
Regras
- O menor código vence.
- Não imprima literalmente 'criatName', mas substitua-o pelo nome da criatura. Não imprima '(x) danos' ou '(x) saúde;' substitua-os pela quantidade real. (Preciso especificar isso porque algumas pessoas são muito criativas ao dobrar as regras.: P)
code-golf
simulation
Maçaneta da porta
fonte
fonte
goblin 50 40 18 3 2 elf 50 35 15 4 5
?Respostas:
APL (
249244242)Dessa forma, neste procedimento, você deve colá-lo em uma janela do editor (pelo menos no Dyalog). Eu o nomeei
G
(a primeira linha é o nome, eu o incluí, porque é assim que aparece na janela do editor e, portanto, provavelmente deve ser contada).(edit: usou GOTOs numéricos em vez de rótulos de linha. Acontece que (pelo menos no Dyalog) toda a definição de um rótulo
X:
é definidaX
como o número da linha; portanto, é melhor usar os números diretamente.)fonte
Perl, 254 + 1
Corra com
perl -nM5.010
(ouperl -nE '<code>'
). Por meta , o-n
switch conta como um caractere extra. Não há truques de golfe sofisticados neste código, exceto talvez o uso de$=
como variável de dano para salvar umint
.Edit: Felizmente, o cálculo do dano está correto agora.
fonte
CoffeeScript
454432Passe uma string
b
para obter os resultados. Eu pensei que seria mais divertido ter uma saída gráfica animada, então montei uma demo. Basta alterar a caixa de entrada para alterar estatísticas e nomes. As imagens do jpg.to, que é a API não oficial do google-images.Super Action Demo
Entradas recomendadas (sugira a sua):
fonte
voldemort 9999
haha: D10e42
, mas o seu navegador pode congelar ...Ruby,
292264Minha primeira entrada de código de golfe; como essa definição de método analisa está além de mim :)
Posso ler a entrada dos parâmetros da linha de comando (por exemplo
ruby battle.rb goblin 50 40 35 3 2 elf 50 35 30 4 5
)?Ideone run
fonte
JavaScript;
347341333Como sempre faço, começarei com minha própria solução:
EDIT: aparentemente atribuindo
console.log
a uma variável quebra em alguns navegadores, então aqui está o mesmo código com uma declaração de função:Eu estava pensando em mudar para
alert
, mas isso seria apenas mau: Pfonte
Uncaught TypeError: Illegal invocation
por causa dea=console.log
. você não teria que vincular oconsole
objeto como contexto, por exemploa=console.log.bind(console)
?alert
, mas isso seria muito chato: PPython: 393
Eu apertei um pouco mais, se eu tivesse 3, provavelmente poderia fazer
print = p
para encurtá-lo um pouco mais, mas acho que não resta muito neste.393:
399:
Acho que as pessoas estão pulando que, se você tem uma boa condição no circuito, não precisa verificar se o alvo está abaixo da saúde.
fonte
JavaScript:
340306339:
306:
Saída de amostra:
Editar notas: +1 caractere, perdi o "!" depois de "esquiva"
Ah, e esqueci de colocar uma saída depois de "Amostra de saída"
Alterou o cabeçalho para JavaScript, como sugere @tbodt
fonte
R: 387 caracteres
Ou totalmente desenvolvido, com recuos e comentários, para tornar as coisas mais claras:
fonte
C # -
464453 caracteresDepois de algumas noites nisso, não consigo chegar nem perto das outras entradas (não é tão surpreendente para C #). Ainda há espaço para melhorias, suspeito. Não há truques especialmente inteligentes.
Comentado:
fonte
Python 3, 314
fonte