Imprime todos los caracteres que tu programa no tenga


221

Su tarea es crear un programa (utilizando solo caracteres ASCII imprimibles y / o pestañas y líneas nuevas) que imprima exactamente los caracteres en el espacio ASCII imprimible ( 0x20a 0x7e) que no aparecen en el código fuente de su programa (en cualquier orden, sin embargo muchas veces que quieras).

El código más corto para hacer esto en cualquier idioma gana.


19
Lo son, pero no están en el rango 0x20de 0x7e, que se definen como los "caracteres ASCII imprimibles". Técnicamente, las pestañas y las nuevas líneas son en realidad caracteres de control.
Joe Z.

3
¿Se nos permite imprimir nuevas líneas (o cualquier otro carácter ASCII no imprimible)?
flornquake

1
Las pestañas y las nuevas líneas no se procesan de manera que ocupen una posición de impresión. Mueven la posición. Consulte la función ANSI C "isprint".
Kaz

1
¿Cómo se revivió esta pregunta? Ha comenzado a recibir votos de nuevo.
Joe Z.

3
@Timwi: si quisieras hacer eso, también deberías mostrar todos los caracteres en el espacio de caracteres CJK (excepto los que aparecen en tu código). Es demasiado complicado de administrar, así que lo restringí solo a ASCII.
Joe Z.

Respuestas:



275

Polyglot, 95

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

No hace nada.


19
No, pero este es un poliggot. No quiero destruir eso.
Johannes Kuhn el

95
Introduje esto en el compilador de GNU Fortran y se volvió a configurar.
marinus

12
En C, #undef X;whatever junk you wantfunciona.
ugoren

66
También funciona en Python (porque se usa #para comentarios como Ruby y Perl)
Doorknob

87
"El código más corto para hacer esto en cualquier idioma gana". Por la falta de un código que funcione en cualquier idioma, esta entrada debería ganar, ya que es el código que funciona en la mayor cantidad de idiomas. ;-D
msb

142

PHP 5.2, 4

<?<<

Guardar como un archivo llamado NYUIOMK()'DEAQRWVX[Z]\^@CBGFJqwv{z}|~`bgfkj203547698;=>!#"%$&+*-.phpen algún lugar /home. short_open_tagnecesita estar Onen tu php.ini.

El resultado es:

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

42
Jaja, buena flexión de las reglas.
Johannes Kuhn el

66
Agradable, pero desafortunadamente puedo detectar un :en la salida.
Howard


78
Lo agradezco, @TheGuywithTheHat, pero respondí esto hace aproximadamente un año, a diferencia de ayer.
Ry-

99
@TheGuywithTheHat Esta fue una de las respuestas cuando la escapatoria era divertida, nueva y conducía a tu meta publicación vinculada. Ahora ya no lo es.
Johannes Kuhn

48

JavaScript - 88

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

imprime "bcdfghijkmnpquvxyz"


13
Wow, me gusta la idea de toLowerCase, ¡es genial!
Pierre Arlaud

2
Puede guardar tres caracteres con un poco de matemática: "!#$%&*+,-13:<=>?@[\]^_`{|}~AERTOWS";alert('BCDFGHIJKMNPQUVXYZ'.toLowerCase()+95*72)porque 95*72= 6840y mover los caracteres desperdiciados a una cadena le permite usar las comillas en lugar de desperdiciarlas. Además de eso, esconder personajes en un comentario se siente cursi.
Umbrella

28

Espacio en blanco, 61 57 caracteres

No es el más corto, pero probablemente tiene la lógica más simple (en realidad es solo un bucle).

Aquí está completamente comentado, donde S es espacio, T es tabulación, L es avance de línea:

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

Gracias a @res por la corrección a lo anterior (duplicado adicional requerido para la instrucción de bifurcación) y por números más pequeños para empujar en la pila.


1
Esto no funciona tal como está, pero se puede solucionar insertando un duplicado-top-of-stack (SLS) inmediatamente antes de la rama condicional (LTTSL): es necesario porque el comando de rama condicional elimina la parte superior de la pila . El programa resultante de 64 caracteres funciona como se anuncia. (Si el programa se almacena en un archivo con extensión .ws, se puede probar en línea en golf.shinh.org/checker.html )
res

1
Además, la duración del programa puede ser reducido a 57 usando casi el mismo programa pero con los tres números -94, 127, 126 cambió a 32, 1, 126, respectivamente empujó: SSSTSSSSSL LSSSL SSSTL TSSS SLS SLS TLSS SSSTTTTTTSL TSST LTTSL LLL.
res

Sé que han pasado más de 5 años, pero puedes jugar 5 bytes cambiando la etiqueta S a etiqueta (vacía) (se LSSSLconvierte LSSLy se LTTSLconvierte LTTL) y elimina la salida al final (los tres LLL). Pruébelo en línea sin procesar 52 bytes o aquí con resaltado y explicación .
Kevin Cruijssen

22

C, 83 74 69 caracteres

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

Realmente intenté descifrarlo por debajo de 80 caracteres, pero no pude lograrlo. Finalmente decidí publicar lo que tengo, asumiendo que yo (u otra persona) descubriré la solución de 79 caracteres diez minutos después de publicar esto. De acuerdo, no fueron diez minutos, pero funcionó en principio.

Tenía muchas ganas de publicar una versión que no tenía que tener un espacio gratuito en el código fuente, pero que aterrizó en una órbita de atractor extraño, rebotando entre un puñado de soluciones. Después de muchos minutos de tratar de empujar a uno de ellos a una solución estable, me di por vencido y agregué el espacio.


69 personajes, simpáticos
galois

21

Golfscript, 26 24 caracteres

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

Toma un script de generación de rango, lo duplica, lo ejecuta, lo resta de su resultado, luego resta el código de sustracción del resultado y el otro carácter de comillas.


2
Maldición, eso es inteligente.
marinus

1
Elimine ''+, escape del programa antes de restar, coloque un noop .;(no encontró una mejor manera de cubrir el punto), use el bloque de código en lugar de la cadena -> {126,33>`-.;}.~que es 16 caracteres
Howard

Y utilizando en cualquier orden, por muchas veces que lo desee , también puede eliminar el punto y coma.
Howard

@Howard me temo que no entiendo tu idea. Puedes publicarlo como una respuesta separada.
John Dvorak el

@PeterTaylor ¿Creí que imprimí un espacio?
John Dvorak el

20

Pescado - 80

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

Cuando el pez comete errores, imprime "algo huele a pescado ...". Como z es una mala instrucción, se equivoca de inmediato


17

Sé que no está ganando ningún concurso. Solo quería probarlo en un idioma que normalmente no se usa, solo por diversión.

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:"");}}

Con saltos de línea y pestañas

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:"");
    }
}

Tenga cuidado si ejecuta: el programa no termina. Jaja

Explicación

  1. for(char c=0;;c++): Dado que a charpuede tratarse como un int, lo uso para mi ventaja aquí para incrementar todos los valores posibles de c. Omito la condición de terminación en el ciclo (la que iría entre los dos puntos y comas) para guardar los caracteres, ya que no se especificó que el programa tenía que terminar. :)
  2. "publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:} ".indexOf(c)<0?c:"": Lamentablemente, no es un enfoque muy elegante, pero hace el trabajo. Enumere manualmente todos los caracteres presentes en el código fuente como un Stringliteral, luego verifique si la corriente char cocurre dentro de él con indexOf(). Si la indexOf()llamada regresa -1, no existe y, por lo tanto, deberíamos imprimirla. El resto solo usa el operador ternario para ahorrar en caracteres y espacio.

puedes explicar un poco?
Joey Rohan 01 de

1
@joeyrohan Claro, acabo de agregar una explicación debajo. :)
asteri 01 de

genial;) cosas bonitas :)
joey rohan 01 de

2
Podría poner TODA la tabla imprimible ascii en un comentario y hacer un programa Java que no devuelva nada. Vencería al tuyo :-)
Pierre Arlaud

99
Podrías haberme dicho que esto imprimirá todos los caracteres Unicode antes de ejecutarlo en mi terminal.
nyuszika7h

14

Perl, 49 caracteres

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

Este es un desafío interesante: es una especie de anti-quine, y he logrado acortar el programa un par de veces al aumentar el rango de caracteres que aparecen en él.


14

Rubí, 81 78 68 66 62 57

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

Simplemente se controla a sí mismo. Caracteres duplicados eliminados manualmente.

¡Gracias a Josh por guardar 4 caracteres y minitech por guardar 5 caracteres!


¿No puede poner el if después de $> << x para guardar una de las líneas finales?
Josh el

@ Josh Sí. Lo haré ahora.
Pomo de la puerta

Puedes llevarlo a 58:(?!..?~).map{|x|$><<x if/[()ifmap{}|x?!.~\/\\\[\]$><]/!~x}
Ry-

1
Ah, y con una mejor opción de nombre de variable, 57:(?!..?~).map{|a|$><<a if/[()ifmap{}|?!.~\/\\\[\]$><]/!~a}
Ry-

$><<((32..126).map(&:chr)-IO.read(__FILE__).chars).join55 bytes con un enfoque diferente.
twe4ked

14

Befunge (48)

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

Salidas: {zyxwvutsrqponmlkjihgfedcba` _ ^] [ZYXWVUTSRQPONMLKJIHGFEDCBA240


Vaca santa! ¡Buen trabajo!
Cruncher

12

No es muy serio, pero tuve que intentarlo:

JSFuck (138152)

(fuente compilada aquí)

Fuente original:

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

Imprime todos los caracteres excepto () + []!


2
(x)<=> [x][+[]], aumenta el tamaño del código pero hace que el alfabeto sea más pequeño.
FireFly

12

Su tarea es crear un programa (utilizando solo caracteres ASCII imprimibles y / o pestañas y líneas nuevas)

Gosh, lo hiciste difícil para APL (¿es eso deliberar?)
Así que decido ignorar todas las reglas !!!

APL (Dyalog), 3 10

⎕AV

Imprime el vector atómico (que incluye todos los caracteres ASCII imprimibles)


Resulta que olvidé por completo la parte "sin" ...
Pero esa es una solución fácil

⎕AV~'AV'''

~'AV''' significa excluir (~ ) los caracteres A, V y comillas simples (se escaparon como comillas simples duplicadas)

Con respecto a la impresión que no es ASCII, bueno, estoy ignorando todas las reglas.


"imprime [s] exactamente los caracteres en el espacio ASCII imprimible ( 0x20a 0x7e) que no aparecen en el código fuente de tu programa" Creo que la salida puede no contener caracteres fuera del espacio ASCII imprimible ("exactamente" es la palabra clave) , y su programa contiene 'A' y 'V', por lo que no deben imprimirse.
FireFly

1
Al menos querrás agregar ~al conjunto de caracteres excluidos. ;-) Por cierto, una solución J similar seríaa.-.'a.-'''
FireFly

2
Puede ignorar todas las reglas, pero eso lo descalifica para ser la respuesta aceptada.
Joe Z.

11

GolfScript ( 18 16 caracteres)

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

Demostración en línea con una línea adicional que verifica la corrección y genera el número de caracteres por error.

(Tengo varias alternativas equivalentes. @`^Se puede reemplazar con \\`; #se puede reemplazar con `o ]. La combinación correcta se puede usar con el truco de Howard para igualar su puntaje de 15 porque las barras invertidas no necesitan escapar en bloques como lo hacen en los literales de cadena: {),\`^32>].~}.~Pero Howard merece el crédito por ese truco).



2
Afortunadamente, ascii termina en }~- aún mejor para los bloques de código, vea mi nueva respuesta ;-)
Howard

11

Brainfuck, 173

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

Bastante largo, podría intentarlo más tarde.


66
escriba un programa que no haga nada y agregue el resto de la fuente a la fuente, el peor de los casos parece 96 caracteres.
Jasen

10

J ( 52 40)

Editar: Duh, se olvidó de e.

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

Versión antigua:

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

Otra variante (misma longitud pero menos salida):

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

@ JanDvorak: error tipográfico
marinus

¡Maldita sea! Tenía la esperanza de poder bajar lo suficiente en Ruby para vencerlo y luego dejarlo caer hasta 40.: P
Pomo de la puerta

El nuevo parece mucho más elegante.
John Dvorak el

1
@Doorknob: Tengo uno en APL que solo tiene 24 caracteres pero tiene caracteres que no son ASCII.
marinus

Sí, hice lo 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)

... gracias a @WolframH por las mejoras.


1
Creo que se puede poner exec(x)en una nueva línea y guardar la ;en x. Además, en Python 3, puede usar x=r"print(*set(map(chr,range(32,127)))-set(x+'=\"'))"\nexec(x)61 caracteres (imprime múltiples espacios, lo cual está permitido).
WolframH

@WolframH ingenioso, gracias!

7

PowerShell: 96

Debe guardarse y ejecutarse como un script.

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

diff es un alias incorporado para Compare-Object.

gces un alias incorporado para Get-Content.

$MyInvocation.InvocationName obtiene la ruta completa al script que se está ejecutando.

32..126es el equivalente decimal para 0x20..0x7ey, por lo tanto, crea una matriz de los códigos decimales ASCII que estamos buscando.

[char[]]toma el contenido del siguiente objeto y los coloca en una matriz, dividiéndolos y convirtiéndolos en caracteres ASCII. Entonces, ahora tenemos dos conjuntos de caracteres ASCII: uno extraído de este script y el otro definido por los criterios de desafío.

-Pa conjuntos Compare-Object en formato "Passthru", por lo que solo los elementos que se encuentran diferentes entre las entradas se emiten en la consola; los indicadores de qué elementos estaban en qué entrada todavía se almacenan en los datos del objeto, pero no se muestran.

|?{$_.SideIndicator-eq'=>'}Compare-Objectsalida de tuberías a Where-Object, que lo filtra solo a los elementos que son exclusivos de la segunda entrada.


Cuerdo e instructivo.
Stéphane Gourichon

7

PHP - 92

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

Salida:

nada

El OP pide imprimir todos los caracteres no utilizados, bueno, solo los uso todos


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

Sabía que habría una presentación que solo usara todos los personajes.
MilkyWay90

1
Esto no usa los personajes!;>Xn
Jo King

6

Javascript, 92

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

¿Es esta una solución justa? alert ('! "# $% ^ * + / -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [] ^ _` bcdfghijkmnopqsuvwxyz {|} ~') Viene en 95 caracteres y es tonto como el infierno.: p
Tristin

2
@tristin: P sí, javascript es un poco detallado cuando se trata de charcode a string. Y no muestra todos los caracteres que su programa no tiene. El texto de su alerta también está en su programa :)
C5H8NNaO4

1
Jaja, oops. Oh bien.
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);}}

no 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);
            }
        }
    }
}

Este es un problema interesante, porque los tokens individuales podrían beneficiarse de su forma más larga porque reutiliza los caracteres. Por ejemplo, normalmente String[]sería más corto, pero String...elimina la necesidad de los corchetes en la cadena condicional.

Descubrí que el truco era tratar de usar caracteres al principio y al final del rango para que pueda excluirlos de la salida simplemente alterando el inicio y el final de su ciclo.

Para Java, un carácter clave para excluir es ", porque tener eso en la cadena requiere escapar, lo que agrega \a su programa, que debe ir en la cadena, que agrega \\. Al eliminar "de su cadena condicional, elimina 4 caracteres. Esto se puede conseguir asegurándose de que utilice y !e iniciar el bucle desde #.

Todas las letras minúsculas aparecen cerca del extremo superior del rango, la única {, |, }y ~viene después de ellos. Debido a la verbosidad de Java, la mayoría de las letras minúsculas se usan solo para la repetitiva. Del mismo modo, {y} son triviales para un programa Java, porque la repetitiva los requiere.

|se puede usar si tiene una condición o, pero no pude encontrar una manera de aprovechar una que conduzca a un programa más corto que simplemente usarla |como operador bit a bit. El |0me hace sentir un poco sucio, porque es la única parte que es un nop sólo para obtener el carácter de allí.

~0rendimientos -1, lo cual es útil porque eso es lo que debemos verificar indexOf. La combinación de esto con el uso !=del bucle condicional elimina el <carácter por completo, lo que significa que no necesita ir dentro de la cadena condicional.


5

sh (47)

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

Utiliza el enfoque autorreferencial. Se supone /dev/urandomque finalmente generará cada octeto al menos una vez. No termina

Si suponemos que manestá instalado, podríamos utilizar la página de ascii(7)manual (y así tener un programa de finalización) ( 44 caracteres, gracias @fennec).

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

¿Podría usar otro archivo, posiblemente con un nombre más corto, que esencialmente tenga todos los octetos posibles? e incluso podría terminar? Estoy pensando como / dev / memory o algo así.

@fennec si asumimos eso many zshestamos instalados, man zshallparece cumplir con los criterios. Podría agregar eso como una variación.
FireFly

man asciiPodría ahorrarte otra carta, creo.

Cual trestas usando GNU trtrata el -in " cat $0" como un operador de rango, que rompe la salida.
Toby Speight

Por cierto, si el asciiprograma está instalado, puede usarlo en lugar de man ascii.
Toby Speight

5

BitShift , 1038 bytes

BitShift es un lenguaje que solo admite 0y 1como sintaxis. Pensé que sería fácil imprimir todos los demás caracteres, pero como realmente no es compatible con el bucle, terminó siendo un enorme 1038 bytes.
Sin embargo, creo que no es realmente posible ir más pequeño que esto ...

101001100101011011010100110111010100100101011001101111010100100101011001000101011011010100101100110110101001001010110010001010110110101000001101010010010101100100010101101101010000010000011001010110110101000010000101011011010100110111010100100101011111100101011011010100110111010100100101011001101111010100100101011001000101011011010100000000011010100100101011001000101011011010100110010000101011011010100110111010100100101011001101001101010010010101100100010101101101010011001000010101101101010011011101010010010101111011111110010101101101010011011101010010010101100101100101011011010100010001010110110101001000010101101101010011011101010010010101110111110010101101101010011011101010010010101111111100101011011010100110111010100100101011111011110101001001010110010001010110110101001000100000101011011010100110111010100100101011111010011010100100101011001000101011011010100100000101011011010100110111010100100101011001101111010100100101011001000101011011010100010000010101101101010011011101010010010101101001101101010010010101101001101010

Huellas dactilares

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

Pruébalo aquí


4

Definitivamente la solución más larga aquí, pero codificar en Lino siempre es divertido:

Linóleo -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;

No hay comentarios, solo lee la fuente compilada en binario. ¡Guardar como a.txto no se compilará!


44
No, el JSFuck es más largo.
Joe Z.

4

Brainfuck, 133 123 114 110 bytes

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

Un poco más de ajustes con una solución anterior (antes de darme cuenta de que la siguiente era más pequeña, aunque esto fue antes de que hiciera una gran optimización). Esto funciona almacenando 4 conjuntos de números ASCII e imprimiéndolos con algunos bucles complicados, y luego da los caracteres que faltan después (es decir, los que están entre números ASCII no válidos).

Presentación original

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

Hace lo siguiente:

  • Cree 4 registros que contengan 11. 13, 28, 33
  • Cree un quinto con el valor 31 para comenzar la impresión.
  • 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~"

La aburrida solución duplicado-caracteres-en-programa-en-una-cadena, resta del conjunto universal. Lejos de ser un ganador de codegolf, aunque es sorprendentemente legible por su longitud.

(Ahora con sustracción de lista en lugar de filter/ notWith.)


puede cambiar import Data.Listaimport List
orgulloso Haskeller

. @ proudhaskeller ¿eh, en serio? No parece funcionar cuando lo intento con runhaskell: "No se pudo encontrar el módulo 'Lista'". Sin embargo, noté que contaba mal la cantidad de caracteres, así que lo corregí.
FireFly

1
bueno, eso es raro, ¿lo intentas con ghc o ghci? Funciona para mí
orgulloso Haskeller

@proudhaskeller no, no puedo hacer que funcione. Esto es con GHC 7.8.3.
FireFly

3

J - 21

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

escriba esto en un archivo llamado 5en el directorio actual. Luego carga, ejecuta el script con0!:1<'5'

O 25 sin el truco del archivo:

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

El código fuente contiene ', que no se elimina de la salida.
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)))

formateado:

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

Creo que esto lo hace, puede necesitar algunos ajustes. salida:

#{@ ` ! 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 { < | = } > ^ ? _}

ejecuta la cadena, que es un código evaluable de clojure, en sí misma. La cadena tiene algunos comentarios al final para que los caracteres se usen fuera de la cadena (método principal, etc.)


3

Pitón 2, 69

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

Utilizo la secuencia más larga (que puedo encontrar) de caracteres continuos que puedo imprimir y agrego los otros como comentario después del código.


8
No voy a votar nada que tenga un comentario
John Dvorak

Mi respuesta debería mostrar la peor forma posible de resolver esta tarea. (Use el vacío de comentarios).
Johannes Kuhn el

99
bien ... a excepción de que políglota que no es nada sino un comentario.
John Dvorak el

@JohannesKuhn Sin embargo, como es el código más largo que funciona, no ganará el concurso. : P
Joe Z.

55
@JoeZ. gana por un amplio margen si divide por la cantidad de idiomas en los que trabaja
John Dvorak
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.