Os caracteres ASCII do código decimal 33 a 126 são:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Observe que na maioria das fontes, 25 desses caracteres têm "buracos": (um gênero maior que 0, você pode dizer)
#$%&04689@ABDOPQRabdegopq
Os outros 68 caracteres "não furados" são:
!"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~
Sua tarefa é escrever o programa mais curto possível usando apenas os caracteres não furados que produzem cada um dos caracteres furados exatamente uma vez em qualquer ordem.
Como Espaço, Tab e novas linhas (avanço de linha e / ou retorno de carro) são espaços vazios, eles podem aparecer no seu programa ou em sua saída. Eles ainda contam para o número de caracteres. Outros caracteres ASCII não podem ser usados (e certamente não caracteres não-ASCII).
Notas
- Você não precisa usar todos os caracteres não gravados nem apenas um de cada.
- A saída pode não conter caracteres não furados.
- O idioma de espaço em branco pode ser usado.
- A saída deve ir para stdout ou pode ir para um arquivo. Não deve haver entrada.
Bônus: Apenas por diversão, tente imprimir todos os caracteres não gravados usando os caracteres ocultos. Estou cético de que isso possa ser feito em um idioma existente.
fonte
main
.~
?Respostas:
Pitão ,
4335 caracteresExperimente aqui .
Imprime os caracteres em ordem, exceto que 9 está no início, nova linha separada.
A string contém todos os caracteres 7 maiores que os necessários, exceto que 9 se tornaria @, portanto, é especial. Algoritmo graças a @Howard.
Explicação:
fonte
GolfScript,
3736 caracteresExperimente o código aqui .
A string contém os caracteres proibidos com 25. Felizmente, todos os caracteres são mapeados para caracteres válidos.
fonte
Brainfuck 119
fonte
--
no início ... Você está de bicicleta de volta a 254 no registo inicial lá?Bônus - dc, 179 caracteres
Oh, bom, outro desafio restrito do conjunto de caracteres
P
é permitido.Uma vez que
dc
é aparentemente obscuro o suficiente para exigir explicações (estranho para mim, considerando as coisas estranhas por aqui!), Aqui está uma visão geral:É principalmente uma calculadora RPN com aritmética de precisão arbitrária. Mas para esse desafio, estou usando o
P
comando, que interpreta um número como uma série de caracteres na base 256 e os imprime. Exemplos:65 P
impressõesA
(código ASCII 65).16706 P
impressõesAB
(16706 = 65 * 256 + 66).Além disso, a única outra característica interessante é que ele reconhece todos os dígitos hexadecimais,
0-9A-F
mesmo quando não estão contidos em um número hexadecimal. A entrada decimal é o padrão; portanto, o token de entrada999
significa9 hundreds + 9 tens + 9
eABC
significa10 hundreds + 11 tens + 12
torná-lo equivalente a1122
.A capacidade de usar os dígitos
ABD
em decimal compensa parcialmente a incapacidade de uso12357
, e a escolha de ordenar e agrupar faz o resto. (Se eu precisar de alguns númerosx
,y
,z
e eles não são representável com dígitos permitidos, então eu tento representarx*256*256+y*256+z
em vez disso.)O programa provavelmente pode ser um pouco mais curto usando grupos maiores. Não passei de 3 bytes por número.
fonte
dc bonus.dc
. dc é um dos idiomas mais antigos do mercado e é um elemento permanente no * nix há literalmente décadas. Porém, não é bem conhecido, provavelmente devido à sua sintaxe misteriosa e pouco legível da RPN. Ótimo para alguns código-golfe desafios embora ;-)Bash + coreutils, 56 bytes
Por sorte, adicionar 7 ao valor ASCII dos caracteres ocultos gera todos os caracteres não perfurados (com exceção de "9"). Então, nós apenas fazemos essa transformação ao contrário, então uma transformação semelhante (subtrai 12 de "E") para obter o "9".
Resultado:
fonte
-7
exibição visível entre caracteres de pontuação, e esses dois fatos não têm nada a ver um com o outro.Perl - 49 bytes
Esta é praticamente uma versão Perl da solução de Howard. XORing a sequência com 25. A saída é um arquivo com o nome
#$%&04689@ABDOPQRabdegopq
. Eu tive a ideia de usarsymlink
e o nome do arquivo como formato de saída, porque todo o resto é banido.Aqui está outra solução Perl que eu criei. Provavelmente pode ser melhorado bastante e é bastante longo, por isso estou saindo em um formato legível por enquanto.
Este gera muitos arquivos, o nome de cada um é um dos caracteres. Eu não conseguia descobrir como anexar strings sem usar um caractere proibido.
for
,while
,map
,say
,print
,eval
,s///e
, E qualquer nome da variável não pode ser usado (variáveis começar com@
ou$
em Perl) que fez este difícil.Espero que os nomes dos arquivos estejam bem como formato de saída, porque tenho certeza de que todas as outras formas de gerar informações usam um dos caracteres banidos.
fonte
-p
bandeira e*_=\(
...)
: Experimente online!-p
bandeira seria banida, já quep
tem um buraco.MATLAB, 36 bytes
TÃO PERTO .... Apenas 1 byte a mais que o vencedor atual (isaacg)! Que, após uma inspeção mais aprofundada, já fez o que me propus a fazer também. Bem, não há mal em reinventar a roda ...
Sei que esse é um desafio antigo, mas só percebi isso depois que me interessei.
Se ao menos eu conseguisse fazer o MATLAB entender que eu quero uma string sem uma
''
... sugestão separada , alguém?fonte
Brainfuck
303275Brainfuck, a melhor linguagem esotérica não-escavada (além do espaço em branco);)
fonte
Ctrl
+K
:)`
Isso é um truque. (Também chamado de sotaque grave, embora " aspire thingies " seja novo para mim: P)JS - 196 - experimente
fonte
h=1-1;j=3+3;k='\\x';m=!i+k;c=m[1];f=m[i=2+2];l=k+3;n=k+j;r=k+i;this[f+'v'+c+'l'](c+'l'+f+'rt("\\x23\\x2'+i+k+25+k+2+j+l+h+l+i+l+j+l+2*i+l+3*3+r+h+r+1+r+2+r+i+r+'f\\x5'+h+k+51+k+52+c+n+2+n+i+f+n+7+n+'f\\x7'+h+k+'71")')
- inlinel
, encurtadom
, declaradoi
no primeiro uso, criou alguns vars extras para padrões repetidos (você poderia melhorar isso ajustando a ordem dos caracteres gerados, mas isso está além da minha paciência: P).GolfScript, 89 caracteres
Simplesmente cria uma matriz de todos os caracteres ASCII e subtrai os caracteres não "ocultados" deles.
fonte
Befunge 98 - 69 bytes
Faz isso em 3 partes. Um em que os valores dos caracteres não furados diferem do caractere furado por 5. Em seguida, os que diferem em 1 e, finalmente, uma lista de caracteres não furados que diferem em 3 dos furados. A instrução de finalização do programa no Befunge é "@" (valor de caractere 64), portanto, no final, carrego "?" (valor do caracter 63) adicione 1 e coloque-o no código com as instruções 's'.
Talvez eu pudesse jogar mais, consolidando os três
seção, mas provavelmente não por muito.
fonte
JavaScript
240228Submissão inicial:
z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;1[_="c\157nstruct\157r"][_](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')()
Agora, este é um ótimo começo, veja como ele se decompõe ...
E então eu pensei ... "Deve haver uma maneira mais simples ..." e existe ...
Submissão revisada:
z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;this[y+"v"+z+"l"](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')
Vendo que eu posso usar
eval
(por montando-lo juntos, inspiração de @bebe, o que é muito mais rápido do que usar oconstructor
de umconstructor
de umnumber
...) Eu perfurados para baixo a 228 ... Eu sei que não pode vencer esta Golf Challenge especial , mas esta é apenas a minha maneira de mostrar o quanto você pode abusar do JavaScript e ainda obter o resultado desejado ...fonte
Principal - Insônia , 50
Emite:
Bônus - Insônia, 268
Emite:
Eu acho que deve ser possível reduzir a duração do programa se a saída for reorganizada, mas preciso modificar meu programa de pesquisa para fazer isso.
Apenas para mostrar um outro idioma capaz de operar com um número restrito de caracteres. A propósito, ele pode escrever praticamente qualquer saída com apenas 3 caracteres únicos na fonte.
Atualmente, esse é o único idioma que pode fazer o desafio principal e o bônus entre todas as respostas existentes.
Intérprete de insônia .
fonte
Befunge 98 - 46 bytes
Versão simplificada da entrada Pyth de isaacg:
fonte
Japonês , 33 bytes
Experimente online!
O mesmo algoritmo da submissão Pyth de isaacg , por acaso é mais curto no Japt.
Como funciona
Sim, é JS, que é uma das linguagens mais abusáveis , apenas mais curta (e você não precisa
alert
ou estáconsole.log
aqui).fonte