Exiba os 12 números em um relógio exatamente como este:
12
11 1
10 2
9 3
8 4
7 5
6
Para ver melhor a grade, aqui está um com pontos:
...........12............
.....11...........1......
.........................
.10...................2..
.........................
.........................
9.......................3
.........................
.........................
..8...................4..
.........................
......7...........5......
............6............
Observe que a grade é esticada em largura por um fator de dois para torná-la mais quadrada.
Observe também que os números de dois dígitos estão alinhados com os respectivos dígitos no lugar. O dígito 9 deve estar nivelado contra a esquerda.
Retorne ou imprima o resultado como uma sequência de múltiplas linhas (não uma lista de linhas). Quaisquer espaços à direita são opcionais. A nova linha final também é opcional.
charCodeAt()
05AB1E ,
393331 bytesObrigado ao Magic Octopus Urn por salvar 6 bytes!
Código
Algumas alternativas de 33 bytes:
Usa a codificação 05AB1E . Experimente online!
fonte
ÿ
com.V
, muito original! E engraçado como você usou12¤
para obter tanto12
e2
na pilha. Eu provavelmente teria usado12Y
, mas acho que isso é irrelevante, já que ambos têm 12 e 2 na pilha. Se eu tivesse tentado esse desafio em 05AB1E, teria terminado muito mais alto na contagem de bytes. Acho que ainda tenho muito a aprender. ;)Y
. Essa teria sido uma opção mais fácil hahaha.6xsŸ5L•δ;Ì’•2ôúð.ø‚ζJ012∞S¶×‚ζJ.c
mas você é bem-vindo a qualquer coisa útil aqui.6xŠ»
também, eu nunca teria pensado nisso.Código da máquina 6502 (C64),
827673 bytes1
dígitos iniciais especialmenteA idéia aqui é armazenar apenas os dígitos de todos os números na ordem em que forem necessários. Informações adicionais necessárias são o número de novas linhas a serem acrescentadas e o número de espaços à frente.
O número máximo de novas linhas é
3
, portanto, precisamos de 2 bits para isso, e o número máximo de espaços é23
, portanto, 5 bits são suficientes. Portanto, para cada dígito a ser impresso, podemos compactar essas informações em um único "byte de controle".Portanto, os dados desta solução levam exatamente 30 bytes: 15 dígitos únicos e 15 "bytes de controle" associados.
Demonstração online
Uso:
SYS49152
para começar.Desmontagem comentada :
fonte
JSR $FFD2 / DEY / BNE loop / LDA .control,X / RTS
solicitando novas linhas e espaços? Eu acho que seria +10 bytes de comprimento e salvar -12 bytes no código principal.JSR $FFD2 / DEY / BPL loop / LDA .control,X / RTS
e o ponto de entrada for oDEY
. Dessa forma, você não precisa testar0
no código principal.DEY / BPL / RTS
sairá imediatamente sem processar nenhumJSR $FFD2
. (Note-se que com esse esquema, o ponto de entrada da sub-rotina deve serDEY
.)Perl 6 ,
7674 bytesExperimente online!
A resposta de Port of Arnauld até que eu possa pensar em algo mais curto.
fonte
R ,
7568 bytesExperimente online!
Comprimiu as posições dos dígitos. Fez isso depois de passar muito tempo tentando encontrar uma resposta trigonométrica (consulte o histórico de edições).
Inspirado por essa outra resposta R, compre J.Doe - faça um voto positivo!
Economizou 7 bytes graças a J.Doe.
fonte
write
chamada para usar o separador padrão.HTML + JavaScript (Tela), 13 + 161 = 174 bytes
O posicionamento arbitrário da tela usa 6 bytes.
Com grade para comparação:
Explicação da fórmula de posicionamento
Veja meu JavaScript com resposta SVG .
fonte
Java
811,141138 bytesExperimente online (NOTA:
String.repeat(int)
é emulado comorepeat(String,int)
para a mesma contagem de bytes, porque o Java 11 ainda não está no TIO.)A explicação é semelhante à abaixo, mas é usada
" ".repeat(x-48)
para os espaços em vez do formato com"%"+(x-48)+"s"
.Java 8, 141 bytes
Experimente online.
Explicação:
Mais explicações
92BCN5BB92BNN1BA991CNNNJ995DNNN2I991ENN6H92FN93G
:92
).fonte
R,
168159125 bytesA solução ingênua de escrever os números nos pontos prescritos em uma matriz de texto. Os pontos são armazenados como letras UTF-8 decodificadas via
utf8ToInt
Queda de 9 bytes com a sugestão de JayCe de usar
write
e evitar definir a matriz.Soltou outros 34 bytes com a sugestão de armazenamento do JayCe.
fonte
m
e usamwrite
: TIO . PS: você não é obrigado a incluir um link TIO em sua resposta, mas ele formata a resposta para você, consulte o ícone do link na parte superior da página do TIO.!
operador para obter 125 caracteres . Solução muito boa!Haskell,
8887 bytesO método encode-spaces-as-letters (visto pela primeira vez na resposta de @ Arnauld ) em Haskell. Usar
{
e expandir para isso\n
é um byte mais curto do que usar\n
diretamente.Experimente online!
fonte
Ferrugem , 96 bytes
Experimente online!
fonte
brainfuck ,
240235 bytesExperimente online!
Código comentado
Um exemplo raro em que o texto é repetitivo o suficiente para que o programa de foda cerebral seja menor que
duasvezes 1,6 vezes a duração da saída!2 bytes salvos por sugestão de Jo King:
>>>>>>-
->[<]>-
3 bytes salvos movendo o terceiro downcounter de 20 lugares da extrema direita dos códigos ascii
10 30 50
para imediatamente à esquerda deles. Economiza<<>>
ao preencher a lacuna entre8
e4
mas adiciona 1 byte à linha>>>++
.Versão original
fonte
Python 2 , 97 bytes
Experimente online!
Calcula todos os espaçamentos e novas linhas no loop
fonte
Geléia , 32 bytes
Um programa completo que imprime o resultado.
Experimente online!
Quão?
(Ainda não pensei em / encontrei algo mais curto do
“¿×¿ Œ4ç4Œ!¿Ø‘
que o que me parece longo para esta parte - quedas / descompressão de base / incrementos, nada parece salvar!)fonte
C (gcc) ,
145137125 bytesSomente as posições das guias são codificadas: todos os espaçamentos de linha e valores de relógio são gerados no loop.
Agradecemos novamente ao tetocat pelas sugestões.
Experimente online!
fonte
"\r\7\3"[j]
vez de"NHDA"[j]-65
PHP , 97 bytes
Experimente online!
Esta é uma sequência compactada codificada. Não consegui encontrar uma solução mais curta que essa!
fonte
file_put_contents($path, '<?=gzinflate("'.gzdeflate($clockString,9).'");');
, mas não sei como postar um código com dados binários dentro dele. Um arquivo como esse tem 70 bytes.Pyke , 37 bytes
Experimente aqui! (bytes brutos)
Experimente aqui! (Legível por humanos)
fonte
brainfuck ,
315313 byteseconomizou 2 bytes graças ao ovs !
Experimente online!
tudo em um bloco de código:
fonte
++++[>++++<-]>
para os 16 no início.><
no seu códigoPowershell,
948882 bytesOperador de formato direto do PowerShell .
{i,w}
significa um espaço reservado para um parâmetro com índicei
, a largura do espaço reservado estáw
alinhada à direita.PowerShell, 88 bytes
Porto de Arnauld Resposta Javascript
-6 bytes graças a @AdmBorkBork
Para ver melhor a rede, use
'.'
vez' '
.fonte
.PadLeft
88 bytes - Experimente online!-f
. Por que você não inclui links para Experimente online! para que outras pessoas possam ver como seu código funciona?This site can’t be reached
apenas o erro . Desculpe.C (gcc) ,
125109105 bytessizeof(wchar_t) == sizeof(int)
- não funcionará no Windows :) Obrigado ErikF pela idéia.Experimente online!
Esta é uma porta de minha ideia geral a partir da solução de 6502 a C. É um pouco modificado: em vez de ter uma bandeira para um líder
1
, o carácter é impresso como um decimal subtraindo 48, de modo que 10-12 são codificados como:
para<
.fonte
Anexo , 69 bytes
Experimente online!
Isso codifica cada execução de espaços como
NTS[count of spaces]
:;NTS
é o interno "numérico para curto", que permite que os números sejam expressos como cadeias. Por exemplo,NTS[95] = $R1
eNTS[170297] = $XQO
.STN
é o inverso deste embutido.Esta resposta substitui (
ReplaceF
) todas as ocorrências de letras (/\l/
) na entrada pelo resultado da funçãosp&`*@STN
, que primeiro decodifica a letra e depois repetesp
(um espaço) várias vezes.fonte
Rápido ,
178165 bytesvar b="";for c in"L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6"{let i=c.unicodeScalars.first!.value;if c=="n"{b+="\n"}else if i>64{for _ in 0..<(i-65){b+=" "}}else{b+="(c)"}};print(b)
Com base no que o Downgoat postou, reduzi isso para 165 bytes:
print("L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6".unicodeScalars.map{let x=Int($0.value);return x==110 ?"\n":(x>64 ?String(repeating:" ",count:x-65):"($0)")}.joined())
Expandido, com
$0
convertido em uma variável nomeada:print("L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6".unicodeScalars.map { c in let x = Int(c.value) return x == 110 ? "\n" : (x>64 ? String(repeating:" ", count: x-65) : "(c)") }.joined())
A sequência de entrada é codificada da seguinte forma: Letras maiúsculas (
A-Z
) representam blocos de espaços, deslocados por 65. Portanto,A
significa 0 espaços,B
significa 1 espaço, o primeiroL
significa 11 espaços, etc.n
s são convertidos em novas linhas. Todos os outros caracteres são impressos como estão.Execute-o online aqui (obrigado, mbomb007)
fonte
{"L12NF11L1NNB10T2NNN9X3NNNC8T4NNG7L5NM6".unicodeScalars.map({(c)->String in let x=c.value;return x==78 ? "\n" : x>64 ?String(repeating:" ",count:x-65) : "\(c)"}).joined()}
(swift 3 (-swift-version 3
no repl) porque a subtração do swift 4 caiu)Pure Bash , 123
printf
faz o trabalho pesado aqui:Experimente online!
fonte
Vermelho , 151 bytes
Experimente online!
fonte
JavaScript com SVG, 188 bytes
A altura da linha arbitrária de 120% usa 4 bytes.
Com grade para comparação:
Explicação da fórmula de posicionamento
Deixei
f(x) = round(sin(x * π/6) * 6)
.Supondo que a origem seja o centro do relógio, as coordenadas da grade do dígito mais à direita de qualquer número de relógio
x
são [f(x) * 2
,f(9 - x)
].fonte
Bash, 225 bytes
Irritantemente, isso é mais longo do que a solução ingênua de apenas imprimir cada linha em um loop (132 caracteres se usar tabstops).
fonte
tr -d \<space>
(onde<space>
é o espaço de caracteres) trabalho em vez da substituição do sed?tr -d\
seria equivalente a #sed 's/ //g'
Python 3 ,
1128887 bytesUma solução usando interpolação de string.
Experimente online!
-25 bytes graças a ovs e Herman L.
fonte
{11:7}
.C (gcc) ,
135123110 bytesIsso usa uma codificação simples onde qualquer um
c
entre'a'
e'z'
representac-'a'+1
espaços repetidos,'`'
representa uma nova linha e todos os outros caracteres permanecem inalterados.Experimente online!
fonte
*s=L"...";f(i){
vez def(i){char*s="...";
T-SQL, 132 bytes
Apenas 12 bytes mais curtos que a solução trivial (
PRINT
de toda a cadeia como está).Encontrei uma variação que gosto muito mais longa (
235226 bytes), mas muito mais parecida com SQL:STRING_SPLIT
quebra em linhas nas vírgulas ePARSENAME
divide cada linha nos pontos. O 1º e o 3º são usados para quantos espaços imprimir, o 2º e o 4º são usados para o que exibir.(quebras de linha neste são apenas para facilitar a leitura)
fonte
Perl 6 , 116 bytes
Experimente online!
(Ta @JoKing para salvar 26 bytes)
Perl 6 , 142 bytes
Experimente online!
Eu queria fazer algo diferente. Portanto, este calcula as posições de todos os dígitos, através de pares de caracteres, retira o espaço inicial e imprime as linhas.
Facilmente modificável para diferentes parâmetros, por exemplo, uma versão com 45 caracteres e 17 dígitos .
fonte