Escriba un script que escriba en la salida estándar, o el equivalente de su idioma, 100 líneas de código Java (válido) que comience con:
class Tuple1 {public Object _0;}
class Tuple2 {public Object _0,_1;}
class Tuple3 {public Object _0,_1,_2;}
class Tuple4 {public Object _0,_1,_2,_3;}
class Tuple5 {public Object _0,_1,_2,_3,_4;}
class Tuple6 {public Object _0,_1,_2,_3,_4,_5;}
class Tuple7 {public Object _0,_1,_2,_3,_4,_5,_6;}
class Tuple8 {public Object _0,_1,_2,_3,_4,_5,_6,_7;}
class Tuple9 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8;}
class Tuple10 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8,_9;}
class Tuple11 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10;}
class Tuple12 {public Object _0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11;}
La última línea debería comenzar con class Tuple100
.
Este es el código de golf , por lo que gana el código más corto en bytes.
public static void main(String[] args)
dar definitivamente una función si lo desea.n
generador de tuplas que escribí en Java: github.com/kenzierocks/Tuplocity . ¡Genera tuplas totalmente genéricas!Respuestas:
Jolf, 42 bytes
¿Recibo puntos de bonificación por vencer a Jelly con la mejor puntuación de la historia? Contiene elementos no imprimibles, por lo que puede probarlo en línea aquí . Reemplacé los no imprimibles con su respectivo índice alternativo para facilitar la lectura.
Explicación
fuente
vim
5654 pulsaciones de teclasComo V es compatible con versiones anteriores, ¡puede probarlo en línea!
¡Esta es la tarea perfecta para vim! Podría jugarlo un poco más tarde. También tenga en cuenta que
<c-a>
significa Control-A, y cuenta como una pulsación de tecla.Explicación:
fuente
yy
porY
.class Tuple101
, noclass Tuple100
como lo hace la pregunta.Jalea, 44 bytes
Mi primera respuesta de Jelly. Pruébalo en línea!
fuente
Pyth,
535048 bytesPruébalo en línea!
La iteración directa sobre el rango (1,100) y la construcción de la cadena de corrosión a partir de una cadena empaquetada a través del formateo.
Explicación
La cadena desempaquetada es
class Tuple%i {public Object _%s;}
fuente
s[
lugar de todos+
.[
hace una lista arbitraria de longitud y las
concatena. Además, como quieres[1, 2, ... 100]
, no[0, 1, .. 99]
, utilizasVS100
, y tampoco lo necesitarásh
.S
truco! :) Ya estaba dispuesto a deshacerme de todo++++
eso, sabía que había una mejor manera."
innecesariamente.j<str><int>
noU
?CoffeeScript,
8684 bytesVer la solución en línea
fuente
for
ni el siguientein
.)console.log"
? (No sé guión de café, es un truco general.x? y:z
es completamente diferente dex ? y:z
. Puedes decirconsole.log?"hello"
pero noconsole.log"hello"
. Espacio en blanco significativo. A veces agradable, a veces raro.Java,
160, 125 bytesGracias a @DenkerAffe, @Denham Coote y @Mathias Ettinger por las mejoras.
Java escribiendo java (¡porque alguien tenía que hacerlo!)
Y la versión sin golf
fuente
public static void main...
cosas.class Tuple1 {public Object _0,;} class Tuple2 {public Object _0,_1,;}
i++
de la configuración del bucle forString s = "_0"
para que puedas += ",_" + i
y guardar un byte. También resolverá el problema con el coma final. Tendrá que iniciar el bucle for pasando de1
menos a101
y podrá eliminar 4 bytes adicionales convirtiendo solo(i+1)
en su mensaje de salidai
. Obviamente, deberá imprimir antes de incrementars
.Oracle SQL 9.2,
138137 bytes@ Peter Gracias por señalar el error 0/1.
La consulta usa CONNECT BY CLAUSE de consulta jerárquica para generar 100 filas.
La pseudocolumna LEVEL contiene el número de fila de cada fila.
SYS_CONNECT_BY_PATH concatena el primer parámetro, el número de fila, de cada fila, y usa el segundo parámetro como separador.
fuente
Object _1
lugar deObject _0
, por lo que tomará otros dos bytes (-1
). Sin embargo,_
se puede agregar al carácter de enSYS_CONNECT_BY_PATH
lugar de concatenar, reduciéndolo en dos de esos bytes nuevamente:REPLACE('class Tuple'||LEVEL||' {public Object'||SYS_CONNECT_BY_PATH(LEVEL-1,',_')||';}','t,_','t _')
Lote, 128 bytes
Editar: guardado 10 bytes gracias a @Bob. Guardado 1 byte gracias a @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.
fuente
enabledelayedexpansion
por 117 bytes: gist.github.com/Elusive138/4cea555114a979954dcb : si no le importa que se cierre la ventana de la consola, puede guardar dos más eliminando el/b
argumento deexit
.@echo off
Retina ,
8079 bytesEl recuento de bytes asume la codificación ISO 8859-1.
Pruébalo en línea!
fuente
Powershell - 65 bytes
(Modificado en respuesta al comentario)
Todo el crédito a TimmyD
fuente
Perl 6 , 65 bytes
fuente
R -
199132123118 bytesVersión 4
Versión 3
Versión 2
Versión 1
fuente
=
para la asignación en lugar de<-
.for(i in 1:100){f=(p=paste0)("class Tuple",i," {public Object ");for(j in 0:(i-1))f=if(j<i-1)p(f,"_",j,",")else p(f,"_",j,";}");cat(f,sep="\n")}
Ruby, 71 bytes
fuente
[*0..i]*',_'
wowJava, 103 bytes
Mi primera vez aquí ¡Hola! Fui por una expresión lambda Java8 (también conocida como una función anónima).
Versión sin golf
Para usar esto realmente, como es habitual en Java8, debe asignarlo a una variable de (o convertirlo a) una interfaz funcional apropiada y luego llamar a su método; pero técnicamente, la función es solo la expresión lambda en sí misma, así que solo cuento eso.
También requiere un parámetro de entrada, lo que me ahorra un par de bytes, ya que puedo abusar de él como una variable local sin tener que especificar su tipo. No estoy seguro de si eso se considera trampa, pero para mí parece estar dentro de las reglas: solo vi que la gente dice que publicar una función está permitido, no cómo se debe invocar esa función. :) Y en realidad no lee el parámetro, por lo que la función sigue siendo autónoma; puede pasarle cualquier Cadena, o incluso nulo, y seguirá produciendo la salida correcta.
Y aquí está cómo usarlo:
fuente
Pitón 2, 96
Pitón 3, 98
Uso:
Sin golf:
formadores:
103
108
fuente
print f(3)
da:class Tuple1 {public Object _0;}
class Tuple2 {public Object _0,_1;}
class Tuple3 {public Object _0,_1,_2;}
class Tuple4 {public Object _0,_1,_2,_3;}
class Tuple%d {public Object _0,_1,_2,_3
CJam, 53 bytes
Pruébalo aquí .
fuente
Groovy, 74 caracteres
"join ()" es inmejorable ... Nueva solución, gracias a @yariash
Solución anterior, 78 caracteres:
fuente
100.times{}
lugar de(1..100).each{}
.Julia, 77 bytes
fuente
LUA,
128106 BytesTodavía estoy tratando de encontrar una manera de trabajar directamente en un valor impreso, y no en una cadena.
Editar: ¡Lo encontré parcialmente! Todavía necesito una cadena para la parte "_0, _1 ...", pero ya es mejor :).
Solución antigua de 128 bytes
Sin golf
fuente
Python 3,
111109105 bytesNo es lo más corto del mundo, solo estoy participando.
edit1: abajo 2 bytes quitando
0,
en primer lugarrange
edit2: Estaba lanzando innecesariamente
int
enstr
lugar de solo usar%i
... Down to 105.fuente
range(i)
en lugar derange(0,i)
o como lo usórange
dos veces, intenter=range
temprano y luego haga referencia a cada llamada con solor
(como en las otras soluciones de Python).range
comienza en 0 por defecto. Sin embargo, hasta 2 bytes, agregandor=range;
al principio los resultados en exactamente el mismo recuento de caracteres, ¡lo he intentado! : D',_'.join(map(str,range(i)))
es 7 bytes más corto.Mathematica, 130 Bytes
fuente
\n
se puede reemplazar con un carácter de nueva línea literal.Scala, 85 bytes
fuente
Java, 116
(solo para la función de impresión; de acuerdo con algunos comentarios, esto está en línea con las reglas)
fuente
PHP, 112 bytes
fuente
<?php for($i=0;$i<100;$i++){$m.=$i==0?"_$i":",_$i";echo 'class Tuple'.($i+1)." {public Object $m;}\n";}
echo 'class Tuple'.($i+1)." {public Object $m;}\n";
, puede usarecho'class Tuple',$i+1," {public Object $m;}\n";
, que es 3 bytes más corto. Además, de acuerdo con el meta, puede eliminar el<?php
y asumir que su código se ejecutará conphp -r "code"
. Además, puede hacerlofor(;++$i<101;)echo"class Tuple$i {public Object ",$m=($m?"$m,":'')."_$i",";}\n";
por 80 bytes (necesita reemplazar el\n
con una nueva línea real). Pruébelo aquí: ideone.com/oOzKtPEn serio, 55 bytes
Hexdump (reversible con
xxd -r
):Pruébalo en línea!
Sí, se supone que esa nueva línea está allí.
Explicación (nueva línea reemplazada por
\n
):fuente
Japt, 52 bytes
El
?
debería ser el byte literal 0x95. ¡Pruébelo en línea!Japt tiene:
Ni siquiera puedo usar un punto y coma en la cadena porque la función en la que está envuelta quiere devolver todo después del punto y coma. Esto solo debe ser de 46 bytes:
Pero, por desgracia, no lo es. Veré si puedo solucionar estos errores en las próximas dos horas.
Cómo funciona
fuente
X
, por cierto.Javascript,
112110 bytes2 bytes de descuento gracias @ CᴏɴᴏʀO'Bʀɪᴇɴ .
Sin golf:
fuente
${i+1}
con${i++}
y reemplazar${[...Array(i++)]
con${[...Array(i)]
.++i
Groovy, 97 bytes
Pruébalo en línea!
fuente
join','
), eliminar espacio después de println y reemplazar.collect{}
con*.with{}
Python 2, 96 bytes
Gracias @DenkerAffe por la sugerencia de usar
lambda
.Gracias @MathiasEttinger por la
join
idea.fuente
reduce(lambda x,y:'%s,_%s'%(x,y), r(i))
',_'.join(map(str,r(i)))
para una eliminación adicional de 14 bytes (o 15, ya que dejó un espacio adicional en sureduce
).C ++,
164159157 bytes (155 como función solamente)Este es un programa completo. Puede guardar 2 bytes en forma de función solo si lo reemplaza
int main()
convoid f()
.Ejecutar código en Ideone
Sin golf, incluida la expansión macro
fuente
j=1
en su bucle for, por lo tanto, no tener elif(j)
.for(int j=0;++j<=i;)
ahorrar un byte más.