Ecrivez un script qui écrit sur la sortie standard, ou l'équivalent dans votre langue, 100 lignes de code Java (valide) commençant par:
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 dernière ligne devrait commencer par class Tuple100
.
C'est du code-golf , donc le code le plus court en octets gagne!
public static void main(String[] args)
donner une fonction si vous le souhaitez.n
générateur que j'ai écrit en Java: github.com/kenzierocks/Tuplocity . Il génère des tuples entièrement génériques!Réponses:
Jolf, 42 octets
Est-ce que je reçois des points bonus pour avoir battu Jelly avec le meilleur score? Contient des éléments non imprimables, vous pouvez donc essayer en ligne ici . J'ai remplacé les non imprimables par leur index alt respectif pour plus de lisibilité.
Explication
la source
vim
5654 frappes au clavierPuisque V est rétrocompatible, vous pouvez l’ essayer en ligne!
C'est la tâche idéale pour vim! Je pourrais jouer au golf un peu plus tard. Notez également que cela
<c-a>
signifie Control-A, et cela compte comme une frappe.Explication:
la source
yy
parY
.class Tuple101
, pasclass Tuple100
comme le demande la question.Gelée, 44 octets
Ma première réponse de gelée. Essayez-le en ligne!
la source
Pyth,
535048 octetsEssayez-le en ligne!
Itération directe sur la plage (1 100) et construction de la chaîne corrospondante à partir d'une chaîne compactée en la formatant.
Explication
La chaîne déballée est
class Tuple%i {public Object _%s;}
la source
s[
au lieu de tous+
.[
fait une liste de longueur arbitraire et las
concatène. De plus, puisque vous voulez[1, 2, ... 100]
, non[0, 1, .. 99]
, utilisezVS100
, et vous n'aurez besoin de rien non plush
.S
-trick! :) Était déjà assis sur se débarrasser de tout le++++
, je savais qu'il y a une meilleure façon."
inutile.j<str><int>
nonU
?CoffeeScript,
8684 octetsVoir la solution en ligne
la source
for
ni celle d' aprèsin
.)console.log"
marche? (Je ne connais pas le scénario du café, c'est un truc général.x? y:z
est tout à fait différent dex ? y:z
. Vous pouvez direconsole.log?"hello"
mais pasconsole.log"hello"
. Espaces blancs significatifs. Parfois sympa, parfois bizarre.Java,
160, 125 octetsMerci à @ DenkerAffe, @Denham Coote et @Mathias Ettinger pour les améliorations apportées.
Java écrit java (parce que quelqu'un devait le faire!)
Et la version non-golfée
la source
public static void main...
truc.class Tuple1 {public Object _0,;} class Tuple2 {public Object _0,_1,;}
i++
de la configuration de la boucle forString s = "_0"
afin que vous puissiezs += ",_" + i
et enregistrer un octet. Cela résoudra également le problème du coma final. Vous devrez démarrer la boucle for de1
moins de101
et vous pourrez supprimer 4 octets supplémentaires en convertissant(i+1)
uniquement le message de sortiei
. De toute évidence, vous devrez imprimer avant d’ augmenters
.Oracle SQL 9.2,
138137 octets@ Peter Merci d'avoir signalé l'erreur 0/1.
La requête utilise la requête CONNECT BY CLAUSE de la requête hiérarchique pour générer 100 lignes.
La pseudo-colonne LEVEL contient le numéro de ligne de chaque ligne.
SYS_CONNECT_BY_PATH concaténer le premier paramètre, le numéro de la ligne, de chaque ligne et utiliser le second paramètre comme séparateur.
la source
Object _1
au lieu deObject _0
, cela prendra donc encore deux octets (-1
). Cependant,_
on peut ajouter le caractère deSYS_CONNECT_BY_PATH
au lieu de le concaténer, en le réduisant encore de deux octets:REPLACE('class Tuple'||LEVEL||' {public Object'||SYS_CONNECT_BY_PATH(LEVEL-1,',_')||';}','t,_','t _')
Lot, 128 octets
Edit: 10 octets enregistrés grâce à @Bob. Sauvegardé 1 octet grâce à @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.
la source
enabledelayedexpansion
pour 117 octets: gist.github.com/Elusive138/4cea555114a979954dcb - si la fermeture de la fenêtre de la console ne vous gêne pas, vous pouvez en sauvegarder deux autres en supprimant l'/b
argexit
.@echo off
Retina ,
8079 octetsLe nombre d'octets suppose un codage ISO 8859-1.
Essayez-le en ligne!
la source
Powershell - 65 octets
(Modifié en réponse au commentaire)
Tout crédit à TimmyD
la source
Perl 6 , 65 octets
la source
R -
199132123118 octetsVersion 4
Version 3
Version 2
Version 1
la source
=
pour l'affectation plutôt que<-
.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 octets
la source
[*0..i]*',_'
wowJava, 103 octets
Ma première fois ici. Salut! Je suis allé pour une expression Java8 lambda (aka une fonction anonyme).
Version non-golfée
Pour pouvoir l'utiliser, comme d'habitude en Java8, vous devez l'affecter à une variable (ou la convertir en) d'une interface fonctionnelle appropriée, puis appeler sa méthode. mais techniquement, la fonction n'est que l'expression lambda elle-même, je ne compte donc que cela.
Il nécessite également un paramètre d'entrée, ce qui me permet d'économiser quelques octets, car je peux en abuser en tant que variable locale sans avoir à spécifier son type. Je ne sais pas si c'est considéré comme de la triche, mais pour moi, cela semble être dans les règles: j'ai seulement vu des personnes déclarer que poster une fonction est autorisée, pas comment cette fonction doit être appelée. :) Et comme le paramètre ne lit pas, la fonction est toujours autonome; vous pouvez lui passer n'importe quelle chaîne, voire même null, et il produira toujours la sortie correcte.
Et voici comment l'utiliser:
la source
Python 2, 96
Python 3, 98
Usage:
Ungolfed:
anciens:
103
108
la source
print f(3)
donne: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 octets
Essayez ici .
la source
Groovy, 74 caractères
"join ()" est imbattable ... Nouvelle solution grâce à @yariash
Ancienne solution, 78 caractères:
la source
100.times{}
au lieu de(1..100).each{}
.Julia, 77 octets
la source
Lua,
128106 octetsJ'essaie toujours de trouver un moyen de travailler directement sur une valeur imprimée et non sur une chaîne.
Edit: Partiellement trouvé! J'ai toujours besoin d'une chaîne pour la partie "_0, _1 ...", mais c'est déjà mieux :).
Ancienne solution de 128 octets
Ungolfed
la source
Python 3,
111109105 octetsCe n'est pas la chose la plus courte au monde, je ne fais que participer.
edit1: down 2 octets en supprimant
0,
en premierrange
edit2: J'avais jeté inutilement
int
surstr
plutôt que d'utiliser%i
... Down to 105.la source
range(i)
à la place derange(0,i)
ou puisque vous avez utilisérange
deux fois, essayez plusr=range
tôt, puis référencez chaque appel avec juster
(comme dans les autres solutions Python).range
commence à 0 par défaut. Down 2 octets, cependant, en ajoutantr=range;
au début des résultats avec exactement le même nombre de caractères, j'ai déjà essayé! : D',_'.join(map(str,range(i)))
c'est 7 octets plus court ici.Mathematica, 130 octets
la source
\n
peut être remplacé par un caractère de nouvelle ligne littéral.Scala, 85 octets
la source
Java, 116
(pour la fonction impression uniquement - selon certains commentaires, cela est conforme aux règles)
la source
PHP, 112 octets
la source
<?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";
, vous pouvez utiliserecho'class Tuple',$i+1," {public Object $m;}\n";
, ce qui est 3 octets plus court. En outre, selon la méta, vous pouvez supprimer le<?php
et supposer que votre code sera exécuté avecphp -r "code"
. En outre, vous pouvez fairefor(;++$i<101;)echo"class Tuple$i {public Object ",$m=($m?"$m,":'')."_$i",";}\n";
80 octets (vous devez remplacer le\n
par une nouvelle ligne). Essayez-le ici: ideone.com/oOzKtPSérieusement, 55 octets
Hexdump (réversible avec
xxd -r
):Essayez-le en ligne!
Oui, cette nouvelle ligne est supposée être là.
Explication (nouvelle ligne remplacée par
\n
):la source
Japt, 52 octets
Le
?
devrait être l'octet littéral 0x95. Testez-le en ligne!Japt a:
Je ne peux même pas utiliser un point-virgule dans la chaîne, car la fonction dans laquelle elle est enrobée veut tout renvoyer après le point-virgule. Cela ne devrait être que 46 octets:
Mais hélas, ce n'est pas le cas. Je verrai si je peux résoudre ces bugs dans les prochaines heures.
Comment ça marche
la source
X
.Javascript,
112110 octets2 octets off merci @ CᴏɴᴏʀO'Bʀɪᴇɴ .
Ungolfed:
la source
${i+1}
par${i++}
et remplacer${[...Array(i++)]
par${[...Array(i)]
.++i
Groovy, 97 octets
Essayez-le en ligne!
la source
join','
), l' espace remove après println, et le remplacer.collect{}
par*.with{}
Python 2, 96 octets
Merci @ DenkerAffe pour la suggestion d'utiliser
lambda
.Merci @MathiasEttinger pour l'
join
idée.la source
reduce(lambda x,y:'%s,_%s'%(x,y), r(i))
',_'.join(map(str,r(i)))
pour supprimer 14 octets supplémentaires (ou 15, car vous avez laissé un espace supplémentaire dans votrereduce
).C ++,
164159157 octets (155 seulement en fonction)Ceci est un programme complet. Vous pouvez enregistrer 2 octets sous forme de fonction uniquement si vous remplacez
int main()
parvoid f()
.Exécuter du code dans Ideone
Ungolfed, y compris l'expansion macro
la source
j=1
dans votre boucle, donc ne pas avoir leif(j)
.for(int j=0;++j<=i;)
économiseriez-vous un octet de plus.