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>


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

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 .


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

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

}}}}}}}}{}}~{{{|}~~{{{~{}~{{{|}~~{{{{{{{~{{{{{{{{{{~{{}~{{{|}~~

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.


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.


3
Creo que ambos programas comparten un o...
JayCe
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.