Imprimir cadenas sin compartir caracteres

15

Editar: se permite reutilizar espacios en blanco.

Su tarea es escribir n programas (o funciones, o cuerpos de funciones sin usar parámetros o los nombres de las funciones) en el mismo idioma. El programa k th debería mostrar el número (cardinal) k en inglés estándar en minúsculas (con una nueva línea final opcional). Entonces, el primer programa debería salir one, el segundo debería salir two, etc. Para un número que tiene dos partes, deberían estar separados por un guión como twenty-one.

Pero no hay dos programas en su envío que puedan compartir caracteres que no sean espacios en blanco o caracteres en espacio en blanco haciendo trabajos útiles. Por ejemplo, si su primer programa es justo "one", entonces ninguno de " o ny epuede ser usado nuevamente en sus otros programas.

Puede usar caracteres de espacios en blanco (espacios, líneas nuevas y pestañas) en dos o más programas, si solo sirven como separadores o sangría y no hacen nada por sí mismos. Por lo tanto, no puede reutilizarlos en el lenguaje de espacios en blanco , y no puede usarlos en cadenas en más de un programa.

Solo puede usar caracteres ASCII imprimibles, pestañas y líneas nuevas (incluidos CR y LF). Cada programa debe contener al menos 1 carácter.

Su puntaje es la suma de 1 / tamaño del programa ^ 1.5. La puntuación más alta gana. Puede usar este fragmento de pila ( o este código CJam ) para calcular su puntaje:

function updatescore(a){var l=a.value.split("\n"),s=0;for(var i=0;i<l.length;i++){var t=l[i].length;t-=t&&l[i][t-1]=="\r";if(t)s+=Math.pow(t,-1.5);}document.getElementById('result').textContent=s;}
<textarea id="input" placeholder="Put your code here, one per line." style="width:100%;height:150px;box-sizing:border-box" oninput="updatescore(this)" onpropertychange="updatescore(this)"></textarea><div>Your score: <span id="result">0</span></div>

jimmy23013
fuente
Una mejor regla de puntuación puede ser la suma de 1 / (tamaño del programa + c) ^ 1.5, donde c es una constante. Pero creo que probablemente sea demasiado tarde para cambiarlo.
jimmy23013
¿Podemos agregar un multiplicador para llegar a un número cardinal más alto, ya que ese parece ser el objetivo? Llegué a doce, más alto que todos los demás, pero aún estoy perdiendo.
mbomb007
@ mbomb007 Perdón por hacer deliberadamente Headsecks una puntuación más baja. Pero si Headsecks tiene una puntuación similar a la de los demás, supongo que Glypho ganará demasiado (por no decir Lenguage).
jimmy23013
Quiero hacer esto en espacios en blanco :(
YoYoYonnY
1
@ mbomb007 Si vuelvo a hacer una pregunta similar, probablemente agregaré una pequeña constante a los tamaños de los programas en el puntaje. Pero es demasiado arbitrario cambiar en esta pregunta.
jimmy23013

Respuestas:

6

gs2 , 0.38669200758867045

Elimine los espacios en blanco de todos estos programas, pero tres , es solo para la legibilidad (tos) . uno y seis son programas gs2 que se bloquean (desbordando la pila), lo que convenientemente los convierte en quines .

uno (3 bytes)

one

dos (1384 bytes)

A?"A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0
A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0000000000000
000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000A?"A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A
"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"00000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000A?"A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"0A"
0A"0A"0A"0A"000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
0000

tres (92 bytes)

0a 21 2c 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 21 20 21 20 21 20 21 20 21 20 21 20 21
20 21 20 2f 20 0a 21 28 3c 0a 21 2c 21 20 21 20
21 20 21 20 2f 20 0a 21 28 3c 45 21 20 21 20 21
2f 20 0a 21 28 3c 0a 21 2c 21 20 2f 20 0a 21 28
3c 0a 21 2c 21 20 2f 20 0a 21 28 3c

Un montón de espacio en blanco significativo, así que aquí hay un volcado hexadecimal. Tiene un solo carácter de avance de línea al inicio:


!,! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! / 
!(<
!,! ! ! ! / 
!(<E! ! !/ 
!(<
!,! / 
!(<
!,! / 
!(<

cuatro (276 bytes)

f$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$
31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f$f$31f
$f$31f$f$31Mf$f$f$31f$f$31f$f$31f$f$31f$f$31Mf$f$f$31f$f$31f
$f$31f$f$31f$f$31f$f$31f$f$31f$f$31M

cinco (178 bytes)

hd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&
&&&&&&&Khd+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&K

seis (3 bytes)

six
Lynn
fuente
No vi ese requisito: revisaré y solucionaré las soluciones intermedias.
Lynn
Llego a utilizar 20a través 7E, 09(pestaña), 0A(LF), y 0D(CR), ¿verdad?
Lynn
Si. Editado para permitir CR explícitamente.
jimmy23013
El 1en cinco fue un error tipográfico; Me fui y lo quité. Arreglaré tres ahora.
Lynn
2
Los programas uno y seis son esencialmente errores de sintaxis que vuelcan el código fuente en STDOUT y muestran un error en STDERR. El consenso parece ser que esto está bien (así que felicitaciones), pero debe mencionarlo en su respuesta.
Dennis
13

CJam, 0.24075

Programas

BA1]100cf|
"two"
{hree}`W<7a.-
N)92+_9+_6+_2~+
S(84^I^U$F^X$G^Y$(
's'i'x

Gracias a @ user23013 por su sugerencia de usar 'para seis .

Salida, longitud, puntuación, caracteres usados

one    10  0.03162          01       AB         ]    c f         |  
two     5  0.08944  "                                     o  tw     
three  13  0.02133        -.     7  <        W     `a e h  r    { } 
four   15  0.01721      )+    2 6  9      N       _                ~
five   18  0.01309   $ (       4  8    FGI SU XY ^                  
six     6  0.06804    '                                  i  s  x

Verifique los resultados usted mismo en el intérprete de CJam .

Dennis
fuente
6

Insomnio , 0.100688383057110116

Solo para comenzar las cosas. Es muy poco probable que esto vaya a ganar. Según el esquema de puntuación actual, cualquier idioma que pueda imprimir oneen 5 o menos caracteres tiene una ventaja abrumadora.

uno (8 bytes, 0.04419417382415922)

uuyp>~p~

dos (9 bytes, 0.037037037037037035)

oeoojdoLj

tres (21 bytes, 0.010391328106475828)

*FFFFF
=
=z"
n=nnFzzB

cuatro (23 bytes, 0.009065844089438033)

)HGGGkGGGtGkGk<GGh$HGGt
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
fuente
4

Headsecks , 0.044623631135793776

Generado aquí

Este lenguaje es una simple sustitución de BF donde lo único que importa es el valor de carácter del módulo 8.

Desafortunadamente, los programas más largos dan un puntaje peor, ¡a pesar de poder llegar a doce ! (Podría aumentar si pudiera usar ASCII no imprimible y Unicode).

uno

##%%%%%%%&##$%&#&%&%%%%%%%%%&

dos

--------+--.+++,-..+++.--------.

Tres

5555555535563334566555555555555633333333336555555555555566

cuatro

==;=====>;<=>>;;;;;;;;;>;;;;;;>===>

cinco

EECEEEEEFCDEFFCCCFCEFCCCCCCDEFFCCEFCCCDEFF

seis

KKMMMMMMMMMNKKLMNKNMMMMMMMMMMNMKMMMNKLMNN

Siete

SSUUUUUUUUUVSSTUVSVSSSSSUVSSSTUVVSUUUVSTUVUVSSUVSSSTUVVSSSSSSSSSV

ocho

]][]]]]]^[\]^]^[[[[^]]^[^[[[[[[[[[[[[^

nueve

cceeeeeeefccdeffeeeeefcccccfeeeeeeeeef

diez

mmmmmmmmkmmnkkklmnnkkkkmnkkklmnnkkkkkkkkkn

once

uusuuuuuvstuvuvsssssssvuuuuuuuvsuuuvstuvuvssuvssstuvvsssssssssv

doce

}}}}}}}}{}}~{{{|}~~{{{~{}~{{{|}~~{{{{{{{~{{{{{{{{{{~{{}~{{{|}~~
mbomb007
fuente
Solo puede usar caracteres ASCII imprimibles, pestañas y líneas nuevas.
jimmy23013
@ user23013 Hice tantos como pude y llegué a 12.
mbomb007
2

/// , 0.19245008972987526

one

Esta respuesta está inspirada en la respuesta de @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳, en la que dijo

Según el esquema de puntuación actual, cualquier idioma que pueda imprimir oneen 5 o menos caracteres tiene una ventaja abrumadora.

usuario12205
fuente
OK, el algoritmo de puntuación parece tener una laguna. Bien jugado.
Dennis
Bueno, esta pregunta está encerrada tanto tiempo solo para obtener un mejor método de puntuación. Y todavía no funcionó bien ... Esto también funciona en PHP, ASP, etc.
jimmy23013
0

SmileBASIC, .10062

"uno"

?"one

"dos"

PRINT MID$(@two,1,3)

Mi otra respuesta es más interesante, pero esta obtiene una puntuación más alta.

Una estrategia importante para obtener la cadena más larga es usar MÁS caracteres para guardar en caracteres ÚNICOS (por ejemplo, usar x - -xen el programa 2 para guardar y + ypara el programa 3)

El problema con el sistema de puntuación es que puntúa 2 programas cortos mejor que 3 programas largos, por lo que no hay razón para guardar caracteres para programas posteriores si alarga el programa actual.

Además, valora los programas cortos individuales más altos que un tamaño TOTAL más pequeño. Si cambio ?y PRINTen mi respuesta puedo guardar 1 personaje, pero mi puntaje es la MITAD.

Creo que hubiera sido mejor basarlo solo en la cantidad de programas, con un tamaño total como desempate.

12Me21
fuente
3
Creo que ambos programas comparten un o...
JayCe