Imprima todos os caracteres que seu programa não possui


221

Sua tarefa é criar um programa (usando apenas caracteres ASCII imprimíveis e / ou guias e novas linhas) que imprima exatamente os caracteres no espaço ASCII imprimível ( 0x20para 0x7e) que não apareçam no código-fonte do programa (em qualquer ordem, no entanto) quantas vezes você quiser).

O código mais curto para fazer isso em qualquer idioma vence.


19
Eles estão, mas não estão no intervalo 0x20para 0x7e, que são definidos como os "caracteres ASCII imprimíveis". Tecnicamente, guias e novas linhas são realmente caracteres de controle.
Joe Z.

3
É permitido imprimir novas linhas (ou quaisquer outros caracteres ASCII não imprimíveis)?
Flornquake

11
Guias e novas linhas não são renderizadas de maneira que ocupem uma posição de impressão. Eles movem a posição. Consulte a função "isprint" ANSI C.
Kaz

11
Como essa pergunta foi revivida? Começou a ser votado novamente.
Joe Z.

3
@ Timwi: Se você quisesse fazer isso, também teria que imprimir todos os caracteres no espaço de caracteres CJK (excluindo os que aparecem no seu código). É muito complicado de gerenciar, por isso restrinjai apenas a ASCII.
Joe Z.

Respostas:



274

Poliglota, 95

#undef X;A!"$%&'()*+-[,.]/0123456789:<=>?@BCDEFGHIJKLMNOPQRSTUVWYZ\^_`abcghijklmopqrstvwxyz{|}~

Faz nada.


19
Não, mas este é um poligono. Eu não quero destruir isso.
Johannes Kuhn

95
Alimentei isso no compilador GNU Fortran e ele falhou.
marinus

12
Em C, #undef X;whatever junk you wantfunciona.
precisa saber é

6
Funciona em Python também (porque ele usa #para comentários como Ruby e Perl)
Doorknob

87
"O código mais curto para fazer isso em qualquer idioma vence." Pela falta de um código que funcione em qualquer idioma, essa entrada deve vencer, pois é o código que funciona no maior número de idiomas. ;-D
msb

142

PHP 5.2, 4

<?<<

Salve como um arquivo chamado NYUIOMK()'DEAQRWVX[Z]\^@CBGFJqwv{z}|~`bgfkj203547698;=>!#"%$&+*-.phpem algum lugar /home. short_open_tagprecisa estar Onno seuphp.ini .

A saída é:

PHP Parse error:  syntax error, unexpected T_SL in /home/wherever/NYUIOMK()'DEAQRWVX[Z]\^@CBGFJqwv{z}|~`bgfkj203547698;=>!#"%$&+*-.php on line 1

42
Haha, boa flexão das regras.
Johannes Kuhn

6
Bom, mas infelizmente posso identificar um :na saída.
Howard


78
Agradeço, @TheGuywithTheHat, mas eu respondi isso há cerca de um ano, em oposição a ontem.
Ry-

9
@TheGuywithTheHat Essa foi uma das respostas quando a brecha foi engraçada, nova e levou ao seu meta post. Agora não é mais.
Johannes Kuhn

48

JavaScript - 88

alert("BCDFGHIJKMNPQUVXYZ".toLowerCase())// !#$%&'*+,-0123456789:;<=>?@[\]^_`{|}~AERTOWS

imprime "bcdfghijkmnpquvxyz"


13
Uau, eu gosto da idéia do toLowerCase, é brilhante!
Pierre Arlaud 29/11

2
Você pode salvar três caracteres com um pouco de matemática: "!#$%&*+,-13:<=>?@[\]^_`{|}~AERTOWS";alert('BCDFGHIJKMNPQUVXYZ'.toLowerCase()+95*72)porque 95*72= 6840e mover os caracteres desperdiçados para uma sequência permite usar as aspas em vez de desperdiçá-las. Além disso, ocultar os caracteres em um comentário é extravagante.
Umbrella

28

Espaço em branco, 61 57 caracteres

Não é o mais curto, mas provavelmente possui a lógica mais simples (na verdade, é apenas um loop).

Aqui está completamente comentado, onde S é espaço, T é tabulação, L é avanço de linha:

SSSTSSSSSL     # push 0x20
LSSSL          # label S
SSSTL          # push 1
TSSS           # add
SLS            # duplicate top of stack
SLS            # duplicate again
TLSS           # output ASCII character
SSSTTTTTTSL    # push 0x7E
TSST           # subtract (result - 0x7E)
LTTSL          # branch to label S if top of stack is negative
LLL            # end

Obrigado a @res pela correção do procedimento acima (duplicata extra necessária para a instrução de ramificação) e por números menores para empurrar a pilha.


11
Isso não funciona como está, mas pode ser corrigido inserindo um SLS (duplicado no topo da pilha) imediatamente antes da ramificação condicional (LTTSL) - é necessário porque o comando ramificação condicional remove a parte superior da pilha . O programa de 64 caracteres resultante funciona como anunciado. (Se o programa estiver armazenado em um arquivo com extensão .ws, ele poderá ser testado online em golf.shinh.org/checker.html )
res

11
Além disso, a duração do programa pode ser reduzida para 57 usando quase o mesmo programa, mas com os três números empurrado -94, 127, 126 modificadas para 32, 1, 126, respectivamente: SSSTSSSSSL LSSSL SSSTL TSSS SLS SLS TLSS SSSTTTTTTSL TSST LTTSL LLL.
res

Eu sei que já faz mais de 5 anos, mas você pode jogar 5 bytes alterando o rótulo S para rotular (vazio) ( LSSSLse torna LSSLe LTTSLse torna LTTL) e remover a saída no final (os três LLL). Experimente online cru 52 bytes ou aqui com destaque e explicação .
Kevin Cruijssen

22

C, 83 74 69 caracteres

main(z) {for(;++z<96;"\33iE!vk?}GkRP8z"[z/7]&1<<z%7&&putchar(z+32));}

Eu realmente tentei reduzi-lo para menos de 80 caracteres, mas não consegui fazê-lo. Finalmente, decidi postar o que tenho, supondo que eu (ou outra pessoa) descubra a solução de 79 caracteres dez minutos depois de postar isso. Ok, não foram dez minutos, mas funcionou em princípio.

Eu realmente queria postar uma versão que não precisasse ter um espaço gratuito no código-fonte, mas que aterrisse em uma órbita de atrator estranho, saltando entre várias soluções. Depois de muitos minutos tentando empurrar um deles para uma solução estável, desisti e adicionei o espaço.


21

Golfscript, 26 24 caracteres

"126,32>''+".~\-'.~\-"'-

Pega um script de geração de intervalo, duplica-o, executa-o, subtrai-o de seu resultado e depois subtrai o código de subtração de resultado e o outro caractere de citação.


2
Porra, isso é inteligente.
marinus

11
Remover ''+, escapar programa antes da subtração, colocar em um noop .;(não encontrar uma maneira melhor para cobrir a ponto), o uso bloco de código em vez de string -> {126,33>`-.;}.~que é de 16 caracteres
Howard

E, utilizando qualquer ordem, quantas vezes você quiser, também pode remover o ponto e vírgula.
23413 Howard Howard

@ Howard: Receio não entender sua idéia. Você pode publicá-lo como uma resposta separada.
John Dvorak

@PeterTaylor Eu pensei que imprimia um espaço?
John Dvorak

20

Peixe - 80

zbcdjkpqruvwxaABCDEFGHIJKLMNOPQRSTUVWXYZ#!"'$%^&*()@!+-[]{},;:/\<>=?|~0123456789

Quando os erros de peixe são impressos "algo cheira a peixe ...". Como z é uma má instrução, ele erros imediatamente


17

Eu sei que não está ganhando nenhum concurso. Eu só queria experimentá-lo em um idioma que normalmente não é usado, apenas por diversão.

Java - 209 195 152 140 caracteres

class a{public static void main(String[]a){for(char c=0;;c++)System.out.print("publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:}".indexOf(c)<0?c:"");}}

Com quebras de linha e guias

class a{
    public static void main(String[]a) {
        for(char c=0;;c++)
            System.out.print("publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:} ".indexOf(c)<0?c:"");
    }
}

Cuidado se você executar: o programa não termina. Haha

Explicação

  1. for(char c=0;;c++): Como um charpode ser tratado como um int, uso isso como vantagem aqui para incrementar todos os valores possíveis de c. Omiti a condição de término no loop (a que iria entre os dois pontos e vírgulas) para economizar caracteres, pois não foi especificado que o programa deveria terminar. :)
  2. "publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:} ".indexOf(c)<0?c:"": Infelizmente, não é uma abordagem muito elegante, mas faz o trabalho. Liste manualmente todos os caracteres presentes no código-fonte como um Stringliteral e verifique se a corrente char cocorre nele indexOf(). Se a indexOf()chamada retornar -1, ela não existe e, portanto, devemos imprimi-la. O restante apenas usa o operador ternário para economizar caracteres e espaço.

você pode explicar um pouco?
Joey rohan #

11
@joeyrohan Claro, acabei de adicionar uma explicação abaixo. :)
Asteri

) coisas agradáveis :); legal
Joey Rohan

2
Você pode colocar a tabela imprimível INTEIRO ASCII em um comentário e criar um programa java que não retorne nada. Ele batia o seu :-)
Pierre Arlaud

9
Você poderia ter me dito que isso imprimirá todos os caracteres Unicode antes que eu o execute no meu terminal.
nyuszika7h

14

Perl, 49 caracteres

say grep/[^+-246\[-^aceghmprsy]/,map chr,041..126

Esse é um desafio interessante - é uma espécie de anti-quine, e eu consegui encurtar o programa algumas vezes aumentando o intervalo de caracteres que aparecem nele.


14

Ruby, 81 78 68 66 62 57

(?!..?~).map{|a|$><<a if/[()ifmap{}|?!.~\/\\\[\]$><]/!~a}

Simplesmente se verifica. Caracteres duplicados removidos manualmente.

Agradecemos a Josh por salvar 4 caracteres e a minitech por salvar 5 caracteres!


Você não pode colocar o if após o $> << x para salvar uma das linhas finais?
23413 Josh

@ Jos Sim. Eu vou fazer isso agora.
Maçaneta

Você pode levá-lo para 58:(?!..?~).map{|x|$><<x if/[()ifmap{}|x?!.~\/\\\[\]$><]/!~x}
Ry-

11
Ah, e com uma melhor escolha do nome da variável, 57:(?!..?~).map{|a|$><<a if/[()ifmap{}|?!.~\/\\\[\]$><]/!~a}
Ry-

$><<((32..126).map(&:chr)-IO.read(__FILE__).chars).join55 bytes usando uma abordagem diferente.
twe4ked

14

Befunge (48)

<|::-1,+*88:<+3*87
6<@.**85
9>"()~&"/%$ |!#';=?}

Saídas: {zyxwvutsrqponmlkjihgfedcba` _ ^] [ZYXWVUTSRQPONMLKJIHGFEDCBA240


Vaca sagrada! Bom trabalho!
Cruncher

12

Não é muito sério, mas eu tive que tentar:

JSFuck (138152)

(fonte compilada aqui)

Fonte original:

for(x=0x7e;x>0x19;x--){
    console.log(String.fromCharCode(x).replace(/[\[\]!\+\(\)]/ig, ''))
}

Imprime todos os caracteres, exceto () + []!


2
(x)<=> [x][+[]], aumenta o tamanho do código, mas reduz o alfabeto necessário.
FireFly

12

Sua tarefa é criar um programa (usando apenas caracteres ASCII imprimíveis e / ou guias e novas linhas)

Puxa, você dificultou a APL (isso é delibarate?)
Então eu decido ignorar todas as regras !!!

APL (Dyalog), 3 10

⎕AV

Imprime o vetor atômico (que inclui todos os caracteres ASCII imprimíveis)


Acontece que eu esqueci completamente a parte "sem" ...
Mas isso é uma solução fácil

⎕AV~'AV'''

~'AV'''significa excluir ( ~) os caracteres A, V e aspas simples (escapou como aspas simples duplicadas)

Em relação à impressão não-ASCII, bem, estou ignorando todas as regras.


"imprima [...] exatamente os caracteres no espaço ASCII imprimível ( 0x20para 0x7e) que não aparecem no código-fonte do seu programa" Acredito que a saída pode não conter caracteres fora do espaço ASCII imprimível ("exatamente" sendo a palavra-chave) , e seu programa contém 'A' e 'V' para que não sejam impressos.
FireFly

11
Você pelo menos desejará adicionar ~ao conjunto de caracteres excluídos. ;-) Btw, uma solução J semelhante seria #a.-.'a.-'''
FireFly

2
Você pode ignorar todas as regras, mas isso o desqualifica de ser a resposta aceita.
Joe Z.

11

GolfScript ( 18 16 caracteres)

"),@`^^32>#.~".~

Demonstração online com uma linha extra que verifica a correção e gera o número de caracteres com erro.

(Eu tenho várias alternativas equivalentes. @`^Pode ser substituído por \\`; #pode ser substituído por `ou ]. A combinação certa pode ser usada com o truque de Howard para igualar sua pontuação de 15 porque as barras invertidas não precisam escapar em blocos da maneira que fazem nos literais de string: {),\`^32>].~}.~Mas Howard merece o crédito por esse truque).



2
Felizmente ascii termina em }~- ainda melhor para blocos de código, ver a minha nova resposta ;-)
Howard

11

Brainfuck, 173

+++++[->++++++<]>>>++[------<+>]<++++>>----[----<+>]>-[-------<+>]>-[---<+>]<------->>-[---<+>]<+++++++++>>--[-----<+>]<+++++>>+[---------<++>]+++++++++++++[<[.+<]>[>]<-]\=,

Por muito tempo, posso tentar novamente mais tarde.


6
escreva um programa que não faça nada e adicione o restante de ascii à fonte; no pior dos casos, parece ter 96 caracteres.
Jasen

10

J ( 52 40)

Edit: Duh, esqueci e.

'''(-@.e#[)~95{32}a'(-.@e.#[)~95{.32}.a.

Versão antiga:

(>@(*/@('(>@*/''&~:).#]32{95}a'&~:)&.>)#])95{.32}.a.

Outra variante (mesmo comprimento, mas menos saída):

([#~*/"1@('([#~*/"1@''&:0)95{.32}a'&~:"0))95{.32}.a.

@JanDvorak: whoops typo
marinus

Droga! Eu esperava que pudesse ficar baixo o suficiente em Ruby para derrotá-lo e então você o reduziria para 40.: P
Maçaneta da porta

O novo parece muito mais elegante.
John Dvorak

11
@ Doorknob: Eu tenho um no APL com apenas 24 caracteres, mas possui caracteres não ASCII.
marinus

Sim, fiz a coisa ASCII para evitar idiomas como APL.
Joe Z.

7

Python 3 - 68 61

x=r"print(*set(map(chr,range(32,127)))-set(x+'=\"'))"
exec(x)

... obrigado a @WolframH pelas melhorias.


11
Eu acho que você pode colocar exec(x)em uma nova linha e salvar o ;no x. Além disso, no Python 3, você pode usar x=r"print(*set(map(chr,range(32,127)))-set(x+'=\"'))"\nexec(x)para 61 caracteres (imprime vários espaços, o que é permitido).
WolframH

@WolframH engenhoso, obrigado!

7

PowerShell: 96

Deve ser salvo e executado como um script.

diff([char[]](gc $MyInvocation.InvocationName))([char[]](32..126))-Pa|?{$_.SideIndicator-eq'=>'}

diffé um alias interno para Compare-Object.

gcé um alias interno para Get-Content.

$MyInvocation.InvocationName obtém o caminho completo para o script que está sendo executado.

32..126é o equivalente decimal para 0x20..0x7ee, portanto, cria uma matriz dos códigos ASCII decimais que estamos procurando.

[char[]]pega o conteúdo do próximo objeto e os coloca em uma matriz, dividindo-os e convertendo-os em caracteres ASCII. Portanto, agora temos duas matrizes de caracteres ASCII - uma extraída desse script, a outra definida pelo critério de desafio.

-Padefine Compare-Objectpara o formato "Passthru", para que apenas os itens que são encontrados diferentes entre as entradas sejam exibidos no console - indicadores de quais itens estavam em que entrada ainda são armazenados nos dados do objeto, mas não são exibidos.

|?{$_.SideIndicator-eq'=>'}Compare-Objectsaída de pipes para Where-Object, que o filtra apenas para os itens exclusivos da segunda entrada.


Sane e instrutivo.
Stéphane Gourichon 19/03/2015

7

PHP - 92

<? //A"$%&'()*+[,.]0123456789:=-@ABCDEFGHIJKLMNOPQRSTUVWYZ\^_`abcdefghijklmopqrstuvwxyz{|}~#

Resultado:

nada

O OP pede para imprimir todos os caracteres não utilizados, bem, eu apenas os uso todos


Que tal <?='A"$%&\'()*+[,.]/0123456789:=-@ABCDEFGHIJKLMNOPQRSTUVWYZ\^_`abcdefghijklmopqrstuvwxyz{|}~#'?
Jocap 01/09/2014

Eu sabia que haveria uma submissão que apenas usa todos os personagens.
MilkyWay90

Isso não usa os personagens!;>Xn
Jo King

6

Javascript, 92

(function f(){for(i=32;126>i++;)!~(""+f).indexOf(c=String.fromCharCode(i))&&console.log(c)})()

Esta é uma solução justa? alert ('! "# $% ^ * + / -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [] ^ _` bcdfghijkmnopqsuvwxyz {|} ~') Chega aos 95 caracteres e é burro como o inferno.: p
tristin

2
@tristin: Sim, o javascript é um pouco detalhado quando se trata de codificar para string. E não é a saída de todos os caracteres que seu programa não possui. O texto seu alerta está em seu programa, bem :)
C5H8NNaO4

11
Haha, opa. Ah bem.
tristin

6

Java - 126 caracteres

minimizado:

class hjq{public static void main(String...w){for(char z='"'|0;++z!='a';)if("'()+.0;=OS".indexOf(z)==~0)System.out.print(z);}}

não minimizado:

class hjq {
    public static void main(String... w) { 
        for (char z = '"'|0; ++z != 'a';) {
            if ("'()+.0;=OS".indexOf(z) == ~0) {
                System.out.print(z);
            }
        }
    }
}

Esse é um problema interessante, porque os tokens individuais podem se beneficiar de sua forma mais longa porque reutilizam caracteres. Por exemplo, normalmente String[]seria mais curto, mas String...elimina a necessidade de colchetes na sequência condicional.

Descobri que o truque era tentar usar caracteres no início e no final do intervalo para que você possa excluí-los da saída simplesmente alterando o início e o fim do loop.

Para Java, um personagem-chave para excluir é ", porque ter que na seqüência requer escapar dela, que adiciona \ao seu programa, que precisa ir na corda, que acrescenta \\. Ao remover "da sua cadeia condicional, você remove 4 caracteres. Isto pode ser conseguido por ter certeza que você usa e !e iniciar o seu ciclo de #.

Todas as letras minúsculas aparecer perto do final do intervalo, com apenas {, |, }e ~atrás deles. Devido à verbosidade do Java, a maioria das letras minúsculas é usada apenas para o clichê. Da mesma forma, {e }são triviais para um programa Java, porque o clichê requer isso.

|pode ser usado se você tiver uma condição ou, mas não consegui encontrar uma maneira de tirar vantagem de uma que leva a um programa mais curto do que apenas usar |como um operador bit a bit. O |0que me faz sentir um pouco sujo, porque é a única parte que é um nop apenas para obter o personagem lá dentro.

~0rendimentos -1, o que é útil, porque é com isso que precisamos verificar indexOf. Combinar isso com o uso !=do loop condicional elimina <completamente o caractere, o que significa que ele não precisa entrar na sequência condicional.


5

sh (47)

tr</dev/urandom -cd \[:print:]|tr -d "`cat $0`"

Usa a abordagem auto-referencial. Assume/dev/urandom , eventualmente, produza todos os octetos pelo menos uma vez. Não termina.

Se assumirmos que manestá instalado, poderíamos fazer uso da página de ascii(7)manual (e, portanto, ter um programa de encerramento) ( 44 caracteres, obrigado @fennec).

man ascii|tr -cd \[:print:]|tr -d "`cat $0`"

Você poderia usar outro arquivo, possivelmente com um nome mais curto, que tenha essencialmente a garantia de ter todos os octetos possíveis? e pode até terminar? Estou pensando em / dev / memory ou algo assim.

@fennec se assumirmos que mane zshsão instalados, man zshallparece se encaixar nos critérios. Eu poderia acrescentar isso como uma variação.
FireFly 30/01

man asciipoderia poupar outra carta, eu acho.

Qual trvocê está usando? O GNU trtrata o -in " cat $0" como um operador de intervalo, que interrompe a saída.
Toby Speight

BTW, se o asciiprograma estiver instalado, você poderá usá-lo no lugar de man ascii.
Toby Speight

5

BitShift , 1038 bytes

BitShift é uma linguagem que suporta apenas 0e 1como sintaxe. Imaginei que seria fácil imprimir todos os outros caracteres, mas, como ele realmente não suporta loop, ele ainda acabou com 1038 bytes.
No entanto, acredito que não é realmente possível ser menor do que isso ..

101001100101011011010100110111010100100101011001101111010100100101011001000101011011010100101100110110101001001010110010001010110110101000001101010010010101100100010101101101010000010000011001010110110101000010000101011011010100110111010100100101011111100101011011010100110111010100100101011001101111010100100101011001000101011011010100000000011010100100101011001000101011011010100110010000101011011010100110111010100100101011001101001101010010010101100100010101101101010011001000010101101101010011011101010010010101111011111110010101101101010011011101010010010101100101100101011011010100010001010110110101001000010101101101010011011101010010010101110111110010101101101010011011101010010010101111111100101011011010100110111010100100101011111011110101001001010110010001010110110101001000100000101011011010100110111010100100101011111010011010100100101011001000101011011010100100000101011011010100110111010100100101011001101111010100100101011001000101011011010100010000010101101101010011011101010010010101101001101101010010010101101001101010

Impressões

 !"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Experimente aqui


4

Definitivamente a solução mais longa aqui, mas a codificação no Lino é sempre divertida:

L.in.oleum -655 523 caracteres

"libraries"/arch/cpu/base;/hmi/conout;/data/bytes;/data/string/t2s;/data/heap;/data/heap/connect/mgrab;"stockfile"a;"directors"displaystatus=engage;"injection"c=524;b<-bytes.bytesizeconvert:c;b<-heap.alloc:b;a<-heap.alloc:c;[filecommand]=readfile;[filename]=stockfile;[fileposition]=0;[fileblocksize]=c;[fileblockpointer]=b;arch.fileread;[string.psource]=b;[string.ptarget]=a;string.t2s;b<-heap.alloc:7fh;c=32;d=b;"f"[d_32]=c;+c;+d;?c<7fh>f;"w"d=[a];+a;?d=0>y;?d<32>w;?d>7eh>w;e=b;e+d;[e]=33;^w;"y"b+32;"v"conout.say:b;bye;

Sem comentários, apenas lê a fonte compilada em binário. Salvar como a.txtou não será compilado!


4
Não, o JSFuck é mais longo.
Joe Z.

4

Brainfuck, 133 123 114 110 bytes

++++++++++++++++[->++++++>++>+++>++++>++<<<<<]>-->>->->+[---<.+.+<.+<.+<.+.+.+>>>>]++[-<.+.+.+<.+>>]<+.<+.<++.

Um pouco mais de mexer com uma solução anterior (antes que eu percebesse que o abaixo era menor - embora isso tenha acontecido antes de fazer uma otimização pesada). Isso funciona armazenando 4 conjuntos de números ASCII, imprimindo-os com alguns ciclos complicados e fornecendo os caracteres ausentes posteriormente (ou seja, aqueles que estão entre números ASCII inválidos).

Submissão original

>>+++++++++++[<+<+>>->++>+++<<]<++>>++++++>>+++++[-<<<++++++>>>]<<<+<<[->>+.<<]>>++.++<[->+.<]>++.+>[-<+.>]<++.+>>[-<<+.>>]

Faz o seguinte:

  • Crie 4 registros contendo 11. 13, 28, 33
  • Crie um quinto com o valor 31 para iniciar a impressão
  • Imprimir ascii 32-42 (11)
  • Imprimir ascii 44
  • Imprimir ascii 47-59 (13)
  • Imprimir ascii 61
  • Imprimir ascii 63-90 (28)
  • Imprimir ascii 92
  • Imprimir ascii 94-126 (33)

4

Haskell (70)

import Data.List
main=putStrLn$[' '..'~']\\" \\\"$'.=DLS[]aimnoprstu~"

A solução chata de duplicar caracteres no programa em uma string e subtrair do conjunto universal. Longe de ser um vencedor do codegolf, embora seja surpreendentemente legível por sua extensão.

(Agora com subtração da lista em vez de filter/ notWith.)


você pode mudar import Data.Listparaimport List
proud haskeller

@ proudhaskeller hein, sério? Parece não funcionar quando o tento com runhaskell: "Não foi possível encontrar o módulo 'Lista'". Percebi que, porém, eu descontava o número de caracteres, então eu o corrigi.
FireFly 28/08

11
bem, isso é estranho, tente com ghc ou ghci? Funciona para mim
proud haskeller

@proudhaskeller não, não consigo fazer funcionar. Isso ocorre com o GHC 7.8.3.
FireFly 28/08

3

J - 21

(u:32+i.97)-.1!:1<":5

escreva isso em um arquivo chamado 5no diretório atual. Em seguida, carregue execute o script com0!:1<'5'

Ou 25 sem o truque de arquivo:

(-.~".)'(":u:32+i.0-~95)'

O código fonte contém ', que não é removido da saída.
FireFly

3

Clojure (142, 106103)

(defn -main[](let[c"(fn[l](pr(reduce disj(set(map char(range 32 126)))l)));-\\\"o"]((load-string c)c)))

formatado:

(defn -main []
  (let [c "(fn[l](pr(reduce disj(set(map char(range 32 126)))l)));-\\\"o"]
    ((load-string c) c)))

Pense que isso acontece, pode precisar de alguns ajustes. resultado:

#{@ ` ! A B b # C $ D % E & F ' G H I * J + K k , L M . N / O 0 P Q q R S 4 T 5 U V v 7 W w 8 X x 9 Y y : Z z { < | = } > ^ ? _}

executa a sequência, que é um código clojável avaliável, por si só. A string possui alguns comentários no final para obter os caracteres usados ​​fora da string (método principal, etc.)


3

Python 2, 69

for x in range(38):print chr(x+59)#!"$%&'*,-./012467bdjklmqsuvwyz{|}~

Uso a sequência mais longa (que consigo encontrar) de caracteres contínuos que posso imprimir e adicionar os outros como um comentário após o código.


8
Eu não vou upvote qualquer coisa que tenha um comentário
John Dvorak

Minha resposta deve mostrar a pior maneira possível de resolver esta tarefa. (Use a brecha do comentário).
Johannes Kuhn

9
ok ... exceto aquele poliglota que não passa de um comentário.
John Dvorak

@JohannesKuhn No entanto, como é o código mais longo que funciona, ele não vence o concurso. : P
Joe Z.

5
@JoeZ. ele ganha por uma margem larga se você dividir pelo número de línguas que trabalha em
John Dvorak
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.