Escriba un programa que sea lo más corto posible (medido por el recuento de bytes), no toma entrada, no contiene comentarios y genera una secuencia / secuencia de caracteres, de modo que el programa concatenado + salida tiene exactamente 95 caracteres y contiene todos los caracteres ASCII imprimibles exactamente una vez , es decir, programa + salida es una permutación de los 95 caracteres con códigos ASCII 32-126:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
En caso de empate, el ganador es la entrada cuyo programa + salida concatenado (95 caracteres) está más cerca de la cadena anterior, según lo medido por la distancia de edición de Levenshtein (es decir, el número de eliminaciones de un solo carácter, inserciones o sustituciones requeridas para ponerlo en orden ASCII).
echo $0
está descalificado.Respuestas:
GolfScript, 14 caracteres
Salida :
fuente
),
- Guau. Eso me encantaPerl, 89 caracteres
Esto es lo mejor que he podido hacer hasta ahora:
Para aquellos que no están familiarizados con Perl minutae, los dos argumentos de la
print
declaración se pueden representar como~(-($=)) . (73 * 2)
ytr///
.El programa genera 6 caracteres:
Por desgracia cada iteración constructo que se me ocurre en Perl (
for
,while
,until
,map
,grep
) comparte al menos un personaje conprint
. Si se permitiera que aparecieran nuevas líneas en la salida, entonces podría usar Perl 5.010 para obtener una solución de 87 caracteres:fuente
$=
es el número de líneas horizontales en el dispositivo de salida actual. Por defecto 60.~-$=
es la inversión bit a bit del complemento negativo de dos de 60, que resulta ser59
.73*2
es 146..
y,
haz lo que esperas de ellos.y[]{}
Es otra forma de decirtr///
, que es el operador transliterar. Toma$_
y no hace nada, porque no le diste ningún personaje para reemplazar. Devuelve el número de caracteres reemplazados, que es0
. Entonces tenemos~-$= . 73*2 , y[]{}
=59 . 146 , 0
= '591460`.PHP 67 bytes
Salida:
Parece que debería haber una solución de 65 bytes, generando 30 caracteres en lugar de solo 28, pero no pude hacer que se alineara. Los 6 caracteres no utilizados
OSXouz
se han agregado a uno de los literales de cadena.Editar: luego de una mayor reflexión, no es posible generar más de 28 caracteres de esta manera.
UPPER ^ lower
siempre dará como resultado un carácter entre 32 y 63, por lo que se requieren los 10 dígitos@[\]_`{|}~
. Cuatro de los 22 restantes se usan en el guión mismo, dejando solo 18 que se pueden obtener solo con letras. Sin embargo, el desempate podría mejorarse significativamente.fuente
Ruby, 91 caracteres
Salidas
6273
.%{...}
truco robado de Jan Dvorakfuente
%{ !"#$&\',-/450:<=>ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcefghijklmnqvwxyz|~};puts([email protected]*98+1)
es lo que creo que desea (para 91 caracteres) con el punto y coma movido para usarlo como un separador imprimible (en lugar de una nueva línea), y con las letras de 'ord' eliminadas del interior de las llaves.Perl, 61 caracteres
Salida:
$:
por defecto" \n-"
.x8
lo repite ocho veces; El resultado de 24 caracteres se grabó en bits con una barra libre de 23 caracteres (el último-
se deja como está). La segunda parte es una cadena q de 12 caracteres a nivel de bits y una barra libre de 10 caracteres (los últimos 2 caracteres se descartan).fuente
Ruby, 95 caracteres, 6 ediciones
Sí. Eso es. Solo un literal de cadena flotante que nunca se imprime. Ruby admite literales de cadena (prestados de Perl, creo) en la forma delimitador de tipo porcentual: el delimitador es cualquier carácter no alfanumérico, y si el delimitador de apertura es un paréntesis de apertura (cualquiera de
[({<
), el delimitador de cierre es el correspondiente corchete de cierre (se permiten corchetes anidados).Me doy cuenta de que esto es más una presentación de línea de base, pero a menos que alguien logre imprimir algo o que haya un lenguaje con un literal de cadena de forma libre de dos caracteres con un delimitador de apertura y cierre diferente , este es el mejor que hay.
fuente
Tcl 96, editar distancia 12
fuente
join {!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghklmpqrstuvwxyz|~}
parece funcionar con 95 caracteres? (Gracias por su entrada. Perdón por el camaleón, desafortunadamente lo edité a toda prisa y debería haber hecho las cosas de manera diferente)