O Dia das Bruxas está quase chegando, o feriado após o qual a maioria das pessoas precisa se afastar de uma dieta oca de açúcar.
Escreva um programa que receba um número inteiro positivo. Se o número inteiro for menor que 31 (1 a 30), imprima essa lanterna jack-o'-art ASCII, olhando para a direita como se estivesse ansiosa pelo Halloween:
_____I_____
| | | | | | |
| | |^| |^| |
| | | |^| | |
| | |VvVvV| |
|_|_|_|_|_|_|
Se a entrada for 31 (a data de outubro é o Halloween), produza a mesma lanterna ASCII-o'-lantern, mas olhando para a esquerda:
_____I_____
| | | | | | |
| |^| |^| | |
| | |^| | | |
| |VvVvV| | |
|_|_|_|_|_|_|
Se a entrada for maior que 31, produza uma lanterna ASCII-o'-inchada, que provavelmente comeu muito doce. Ele pode enfrentar a esquerda ou a direita, já que o mal-estar pode ser desorientador. Então, saída:
_____I_____
| | | | | | |
| |o| |o| | |
| | |^| | | |
| |XXXXX| | |
|_|_|_|_|_|_|
ou
_____I_____
| | | | | | |
| | |o| |o| |
| | | |^| | |
| | |XXXXX| |
|_|_|_|_|_|_|
O que você preferir. Pode até ser diferente para números diferentes acima de 31.
O código mais curto em bytes vence.
fonte
x^n>30
truque me deixou confuso no começo, mas quando descobri o que estava acontecendo, roubei-o descaradamente para melhorar minha resposta. Como compensação, estou lhe dando um voto positivo de qualquer maneira.아희 (Aheui) , 914 bytes
Experimente aqui! (copie e cole o código manualmente)
Aheui pode não ser para jogar golfe, mas é divertido. :)
Saídas:
N = 10
N = 31
N = 40
fonte
Geléia , 73 bytes
Programa completo
TryItOnline!
Pode ser possível jogar golfe com a ajuda do salto
ŒḄ
,.Quão?
fonte
Ruby, 137 bytes
Pontos de face deixados no dia 31 e depois.
Ungolfed in program program
fonte
Carvão , 71 bytes
Nota : Esse código não funciona na confirmação mais recente a partir da postagem, porque a indexação da string está quebrada. No entanto, ele deve funcionar nesta versão a partir de 25 de outubro. Também é executado com êxito na versão atualmente disponível no Try It Online .
Explicação
O carvão vegetal é uma linguagem projetada para a arte ASCII. A saída é colocada em uma tela impressa no final do programa.
Configuração
Obtenha entrada e calcule caracteres de face:
Desenhe a abóbora
Após esse ciclo, temos
Próximo:
Resultado:
Desenhe o rosto
Vamos desenhar o rosto olhando para a direita e alterá-lo mais tarde, se necessário.
Resultado (para entrada
31
):Reflita se é o Dia das Bruxas:
Saída final:
fonte
Pitão - 84 bytes
Compressão manual da base.
Conjunto de Teste .
fonte
PHP,
178176171 bytespoderia economizar 5 bytes com quebras de linha físicas. Corra com
-r
.fonte
V , 97 bytes
Experimente online!
Estou desapontado com quanto tempo isso acabou. É mais complicado do que o habitual, já que o V mal consegue lidar com números, muitos bytes vêm da criação de condicionais hacky. Eu publicaria uma explicação detalhada, mas demorou muito tempo para elaborá-la, para que eu pudesse resolver isso mais tarde. Aqui está um hexdump:
Para sua informação, isso será executado muito lentamente. Demorará cerca de 10 segundos. Sei por que isso acontece e estou procurando soluções.
fonte
Pitão, 76 bytes
Experimente online.
Não usa compactação. (Tentei usar alguns para uma versão da sequência de dados de face, mas acabou com o mesmo comprimento.)
fonte
Java 7, 237 bytes
Ungolfed & código de teste:
Experimente aqui.
Saída:
fonte
C ++,
222204194 bytes-18 bytes graças a Kevin Cruijssen e -10 bytes por parte superior explícita
Ungolfed
fonte
&&
para&
e||
para|
? Como resumo,using S=std::string;S f(int n){char L[80],o=2*(n>30),i=-1;while(i++<80)L[i]=47<i&i<53?88:i%2?'|':i==20|i==24|i==36?n<32|i>35?94:'o':i-o%14?i-o<55?32:95:10;S t(5,95);return' '+t+'I'+t+' '+S(L+o,L+70+o);}
( 202 bytes ) compila e executa?i-o
são obrigatórios, portanto, 204 bytes,PHP, 222 bytes
Saída
fonte
Groovy Script,
273265216202198 bytesVersão ungolfed
Experimente aqui
Editar
Como Titus mencionou, posso economizar algum tamanho com
i < 32
vez dei in 1..31
Editar 2
Removido todos os espaços possíveis ao redor dos operadores ... Esqueci de fazer isso no começo
Editar 3
Reescreveu as condições ternárias para usar a variável salva, substituída
;
por novas linhas, removeu a definição explícita de variávelEditar 4
Como Otávio mencionou, posso salvar outros 4 bytes se mudar de
| |${j ? ' |^| | ' : ' | |^| '}| |
para| | |${j ? '^| ' : ' |^'}| | |
fonte
i < 32
vez dei in 1..31
?;
ambas com 1 caractere, sugiro que prefira a nova linha para facilitar a leitura. E desista de bons hábitos de codificação, livre-se delesint
edef
.print
1º ternário, salve a condição em uma variável como(j=i>30)
, então nos próximos 2 use apenas aoj
invés de repetir a mesmai>30
condição.JavaScript (ES6),
163125 bytesAgora, roubar descaradamente o truque da @ ETHproduction para posicionar o rosto. Codificação:
0
é um olho,1
e2
são dentes,3
é o lado esquerdo,4
é o lado direito e5
é a ponte do nariz.fonte
Ruby, 168 bytes
Provavelmente longe de ser o ideal. Requer o
base64
zlib
bibliotecas e .Chame como uma função lambda.
fonte
Python 2, 167 bytes
fonte
C # 6,
223215 bytesint d=int.Parse(args[0]);var x="| | |\n| |";var s=d<31?" |^| |^| |\n| | | |^"+x+" |VvVvV":(d==31?"^| |^"+x+" |^| "+x+"VvVvV| ":"o| |o"+x+" |^| "+x+"XXXXX| ");Write(" _____I_____\n| | | | "+x+s+"| |\n|_|_|_|_|_|_|");
Programa inteiro sem golfe:
fonte
Func<int, string>
que geralmente é a maneira mais curta de fazê-lo.Write
vez de declarar e definirs
.\r\n
invés de apenas\n
?