Genera 100 classi Tuple Java


37

Scrivi uno script che scrive nell'output standard o nell'equivalente della tua lingua, 100 righe di codice Java (valido) che inizia 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;}

L'ultima riga dovrebbe iniziare con class Tuple100.

Questo è , quindi vince il codice più corto in byte!


6
Accetto la sfida! In effetti, lo farò in Java!
Ashwin Gupta,

Posso scrivere una funzione o deve essere un programma completo?
Ashwin Gupta,

3
Sono nuovo sul sito, quindi ho chiesto uno script, ma ho sentito che è consuetudine consentire le funzioni, e questo ha molto senso per Java, per evitare public static void main(String[] args)quindi di dare una funzione se vuoi.
Ray Toal,

1
Grande! Grazie Ray!
Ashwin Gupta,

Non è abbastanza piccolo, ma penso che questo sia un posto perfetto per condividere il mio ngeneratore di tuple che ho scritto in Java: github.com/kenzierocks/Tuplocity . Genera tuple completamente generiche!
Octavia Togami,

Risposte:


8

Jolf, 42 byte

Ricevo punti bonus per battere Jelly con il miglior punteggio di sempre? Contiene non stampabili, quindi potresti provare qui online . Ho sostituito gli non stampabili con il loro rispettivo indice alt per leggibilità.

‼Μz~1d"Ξ/êί Tuple% {Ξ0î⌂ Ξ2Qμ_ %;}"HRzH",_

Spiegazione

‼Μz~1d"Ξ/êί Tuple% {Ξ0î⌂ Ξ2Qμ _%;}"HRzH",_
 Μz~1d                                     map the range 1..100 with the following function
      "                                    begin a string
       Ξ/êί                                short for "class"
            Tuple% {               H       string interpolate H (current number)
                    Ξ0î⌂ Ξ2Qμ              short for "public Object"
                              _%;}" RzH    string interpolate with a range from 1..H joined
                                       ",_  by the string ",_" (auto-closed quotes)

1
Credo. È corretto su questo sito cambiare la risposta accettata se un nuovo punteggio arriva dopo?
Ray Toal,

6
@RayToal Sì, è corretto e persino suggerito di farlo.
Conor O'Brien,

Qual è la codifica dei caratteri per questo? So che le lingue del golf usano spesso la loro codifica, ma non riesco a vedere quale codifica jolf potrebbe usare. Mi rendo conto che questo è vecchio.
ricorsivo il

@recursive Il greco ISO-8859-7, questo: en.wikipedia.org/wiki/ISO/IEC_8859-7
Conor O'Brien,

23

vim 56 54 battiture

iclass Tuple1 {public Object _0;}<esc>qyYp<C-a>$y2bPr,<C-a>q98@y

Poiché V è retrocompatibile, puoi provarlo online!

Questo è il compito perfetto per Vim! Potrei giocare a golf un po 'più tardi. Nota anche che <c-a>significa Control-A, e conta come una sequenza di tasti.

Spiegazione:

iclass Tuple1 {public Object _0;}<esc>         'Enter the starting text


qy                          'Start recording in register y
  Yp                        'Yank the current line, the print on the line below
     <C-a>                  'Increment the next digit to occur by one
          $                 'Move to the end of this line
           y2b              '(yank) 2 words (b)ack. This will grab '_0;'
              P             'Print the previously yanked word before the cursor.
               r,           '(r)eplace the char under the cursor with a comma.
                 <c-a>q     'Increment the current digit, then stop recording
                       99@y 'Playback macro 'y' 99 times.

1
Se conti Control-A come una sequenza di tasti, puoi sostituirlo yycon Y.
Seequ,

1
@Seeq Haha, ho appena realizzato la stessa cosa e l'ho modificata proprio prima di vedere il tuo commento. Grandi menti pensano allo stesso modo!
DJMcMayhem

Sembra che ciò accadrà class Tuple101, non class Tuple100come si pone la domanda.
numbermaniac,

1
@numbermaniac Errore off-by-one semplice. Grazie per la segnalazione! Risolto ora :)
DJMcMayhem

10

Gelatina, 44 byte

R’j“,_”
“¤>%,oỊȤʠ“ØụĊ5D³ṃṠɼQ»j;Ç;“;}¶”
ȷ2RÇ€

La mia prima risposta di Jelly. Provalo online!


Sto sbagliando o questo produce semplicemente un elenco gigante anziché una stringa?
Denker,

@DenkerAffe Sembra funzionare ora! C'era un bug temporaneo in Jelly. (Inoltre, il collegamento era a una vecchia versione della mia soluzione, quindi l'ho aggiornato.)
Lynn,

Bello ... a partire da ora è 9 byte più corto della soluzione CJam!
Ray Toal

8

Pyth, 53 50 48 byte

VS100%." }SüÆðQ´Ó3Ô«%&a´4UçõÛ"[Nj",_"UN

Provalo online!

Iterazione semplice sull'intervallo (1.100) e creazione della stringa corrispondente da una stringa compressa attraverso la formattazione.

Spiegazione

VS100%. "} SüÆðQ´Ó3Ô«% & a´4UçõÛ "[Nj", _ "UN

VS100 # Iterate su intervallo (1.100)
     %. "} SüÆðQ´Ó3Ô«% & a´4UçõÛ "# Disimballare la stringa e formattarla
                              [# Elenco per argomenti di formattazione
                               N # Numero della tupla
                                j UN # Unisci numeri oggetto ...
                                 ", _" # ... sul separatore ", _"

La stringa non compressa è class Tuple%i {public Object _%s;}


Due campi da golf: utilizzare al s[posto di tutti quelli +. [crea un elenco di lunghezza arbitraria e lo sconcatena. Inoltre, poiché lo desideri [1, 2, ... 100], non lo [0, 1, .. 99]usi VS100e non ti servirà neanche h.
Isacco

@isaacg Grazie, non sapevo del Strucco! :) Ero già seduto a sbarazzarmi di tutto ++++, sapevo che esiste un modo migliore.
Denker,

Prego. A proposito, sembra che tu abbia aggiunto una traccia "inutilmente.
isaacg,

1
@isaacg C'è qualche motivo j<str><int>no U?
lirtosiast,

1
No, non proprio. Andrà bene.
isaacg,

7

CoffeeScript, 86 84 byte

console.log "class Tuple#{i} {public Object _#{[0...i].join ',_'};}"for i in[1..100]

Visualizza la soluzione online


Benvenuti in PPCG! Solo per farti sapere che le modifiche che migliorano le risposte sono generalmente disapprovate (e dovrebbero essere rifiutate se finiscono nella coda di revisione). Quindi è più probabile che le persone commentino con suggerimenti, in modo da poterli rivedere da soli. :) (Per quanto riguarda i suggerimenti reali penso che non ti serva né lo spazio davanti forné quello dopo in.)
Martin Ender,

Funziona console.log"? (Non conosco la sceneggiatura del caffè, è un trucco generale.
Addison Crump,

No, come in, rimuovere lo spazio. : PI so che esiste, non so se questa è sintassi valida.
Addison Crump

@VoteToClose L'ho provato prima (usando il live transpiler su coffeescript.org e non ha funzionato).
Martin Ender,

@VotoToClose Oh scusa non l'ho visto. No. in qualche modo lo spazio è richiesto dalla grammatica, ma non mi è esattamente chiaro perché (ancora). La spaziatura conta molto in CoffeeScript, ad esempio, x? y:zè completamente diversa da x ? y:z. Puoi dire console.log?"hello"ma no console.log"hello". Spazi significativi. A volte bello, a volte strano.
Ray Toal,

7

Java, 160 , 125 byte

Grazie a @DenkerAffe, @Denham Coote e @Mathias Ettinger per i miglioramenti.

Java scrive java (perché qualcuno doveva!)

void z(){String s="_0";for(int i=1;i<101;){System.out.println("class Tuple"+(i++)+" {public Object "+s+";}");s+=",_"+i;}}

E la versione senza golf

void z(){
    String s = "_0";
    for(int i = 1 ;i < 101;){
        System.out.println("class Tuple" + (i++) + " {public Object "+ s + ";}");
        s += ",_" + i;
        }
    }

2
Benvenuto in Programmazione di puzzle e codice golf! Se non diversamente specificato nella sfida, è sempre possibile utilizzare le funzioni anziché i programmi completi. Quindi dovresti usare un Java8-lambda (che restituisce il risultato) qui per salvarti tutto public static void main....
Denker,

4
Benvenuti in PPCG. Questa risposta include una virgola aggiuntiva alla fine delle dichiarazioni degli oggetti ...class Tuple1 {public Object _0,;} class Tuple2 {public Object _0,_1,;}
Denham Coote,

3
Puoi salvare altri 3 byte aumentando il contatore dei loop nel sysout (++ i) invece di (i + 1) e rimuovendolo i++dalla configurazione del ciclo for
Denham Coote

Dovresti iniziare String s = "_0"così puoi s += ",_" + ie salvare un byte. Risolverà anche il problema con il coma finale. Dovrai avviare il ciclo for passando da 1a meno di 101e sarai in grado di rimuovere altri 4 byte convertendo solo il (i+1)messaggio nel tuo output i. Ovviamente, dovrai stampare prima dell'incremento s.
409_Conflict

Grazie, ho fatto tutte queste cose e avrò sicuramente un assaggio di java8-lambda.
SoloKix,

6

Oracle SQL 9.2, 138 137 byte

SELECT REPLACE('class Tuple'||LEVEL||' {public Object'||SYS_CONNECT_BY_PATH(LEVEL-1,',_')||';}','t,','t ')FROM DUAL CONNECT BY LEVEL<101;

@Peter Grazie per aver segnalato l'errore 0/1.

La query utilizza CONNECT BY CLAUSE della query gerarchica per generare 100 righe.

La pseudocolonna LEVEL contiene il numero di riga di ogni riga.

SYS_CONNECT_BY_PATH concatena il primo parametro, il numero di riga, di ciascuna riga e utilizza il secondo parametro come separatore.


per favore aggiungi qualche spiegazione
Eumel,

Clever :) Questo inizia con Object _1invece di Object _0, quindi ci vorranno altri due byte ( -1). Tuttavia, è _possibile aggiungere il carattere al SYS_CONNECT_BY_PATHposto di invece di concatenarlo, riducendolo di due quei byte di nuovo:REPLACE('class Tuple'||LEVEL||' {public Object'||SYS_CONNECT_BY_PATH(LEVEL-1,',_')||';}','t,_','t _')
Peter Lang

6

Lotto, 128 byte

@set m=_0
@for /l %%t in (1,1,100)do @call:b %%t
@exit/b
:b
@echo class Tuple%1 {public Object %m%;}&set m=%m%,_%1

Modifica: salvato 10 byte grazie a @Bob. Salvato 1 byte grazie a @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.


3
Sono sempre molto felice di vedere batch su code golf, inoltre, invece di usare @ ovunque, potresti reindirizzare l'output per aggiungere un file chiamato x e usarlo come output
Dennis van Gils,

@DennisvanGils Purtroppo i comandi vengono ripetuti nell'output standard.
Neil,

Eliminato enabledelayedexpansionper 117 byte: gist.github.com/Elusive138/4cea555114a979954dcb - se non ti dispiace chiudere la finestra della console, puoi salvarne altri due rimuovendo l' /barg da exit.
Bob

@Neil lol ok quindi ho appena provato a eseguirlo e ora mi rendo conto di quello che hai fatto. Molto intelligente.
Ashwin Gupta,

All'inizio, usa@echo off
Elliot A.


5

Powershell - 65 byte

(Modificato in risposta al commento)

Tutto il merito a TimmyD

1..100|%{"class Tuple$_ {public Object _$(0..($_-1)-Join",_");}"}

Perché il voto verso il basso? (Si noti che questo è il mio primo post in assoluto, non un grande benvenuto?)
bulletprooffool


4

R - 199 132 123 118 byte

Versione 4

p=paste0;for(i in 1:10)cat(p("class Tuple",i," {public Object ",toString(sapply(0:(i-1),function(x)p("_",x))),";}\n"))

Versione 3

p=paste0;for(i in 1:8)cat(p("class Tuple",i," {public Object ",p(sapply(0:(i-1),function(x)p("_",x)),collapse=","),";}\n"))

Versione 2

p=paste0;for(i in 1:100)cat(p("class Tuple",i," {public Object ",p(sapply(0:(i-1),function(x)p("_",x)),collapse=","),";}"),sep="\n")

Versione 1

for (i in 1:100){
  foo <- paste0("class Tuple", i, " {public Object ")
  for (j in 0:(i - 1)){
    foo <- if (j < (i - 1)) paste0(foo, "_", j, ",") else paste0(foo, "_", j, ";}")
  }
  print(foo)
}

3
Welcome to Programming Puzzles & Code Golf! Since this is a code golf competition, you'll want to make your code as short as possible. You could start by shortening variable names to a single character each, removing whitespace, and using = for assignment rather than <-.
Alex A.

144 bytes: 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")}
Alex A.

No problem. :) Also, you don't need to keep track of your versions in the post body since the revision history is accessible via the link that says "edited X minutes ago."
Alex A.

(though it may be worthwhile to give some indication, either in your edit summaries or in the post what you changed with each revision so that others could learn from your revision process)
quintopia

4

Ruby, 71 bytes

100.times{|i|puts"class Tuple#{i+1} {public Object _#{[*0..i]*',_'};}"}

2
TIL [*0..i]*',_' wow
Ray Toal

4

Java, 103 bytes

s->{s="_0";for(int i=0;i++<100;s+=",_"+i)System.out.printf("class Tuple%s {public Object %s;}\n",i,s);}

My first time here. Hi there! I went for a Java8 lambda expression (aka an anonymous function).

Ungolfed version

s -> {
    s = "_0";
    for (int i = 0; i++ < 100; s += ",_" + i)
        System.out.printf("class Tuple%s {public Object %s;}\n", i, s);
}

To actually use this, as usual in Java8, you have to assign it to a variable of (or cast it to) an appropriate functional interface and then call its method; but technically, the function is only the lambda expression itself, so I am counting only that.

It also requires an input parameter, which saves me a couple bytes, since I can abuse it as a local variable without having to specify its type. I'm not sure if that's considered cheating, but to me it appears to be within the rules: I only saw people state that posting a function is allowed, not how that function needs to be invoked. :) And it doesn't actually read the parameter, so the function is still self-contained; you can pass any String to it, or even null, and it will still produce the correct output.

And here is how to use it:

import java.util.function.Consumer;

public class Main {
    public static void main(String[] args) {
        Consumer<?> r =
            s->{s="_0";for(int i=0;i++<100;s+=",_"+i)System.out.printf("class Tuple%s {public Object %s;}\n",i,s);}
        ;
        r.accept(null); 
    }
}

3

Python 2, 96

def f(n=99):s=n and f(n-1)+',_'+`n`or"class Tuple%d {public Object _0";print s%-~n+';}';return s

Python 3, 98

def f(n=99):s=n and f(n-1)+',_%d'%n or"class Tuple%d {public Object _0";print(s%-~n+';}');return s

Usage:

f()

Ungolfed:

def javatuple(n=99):
    if n == 0:
        s = "class Tuple%d {public Object _0"
    else:
        s = javatuple(n-1) + ',_' + str(n)
    print(s%(n+1) + ';}')
    return s

formers:

103

r=range
for i in r(100):
 print"class Tuple%d {public Object _%s;}"%(i+1,',_'.join(`j`for j in r(i+1)))

108

def f(n=99):
 if n:f(n-1)
 print"class Tuple%d {public Object _%s;}"%(n+1,',_'.join(`i`for i in range(n+1)))

In your python2 answer the last line seems to be incomplete : print f(3) gives : 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
dieter

@dieter The last line is a result. It's printed only when you run it interactively.
pacholik


2

Groovy, 74 chars

"join()" is unbeatable... New solution, thanks to @yariash

100.times{println"class Tuple$it {public Object _${(0..it-1).join',_'};}"}

Old solution, 78 chars:

(1..100).each{println"class Tuple$it {public Object _${(0..it-1).join',_'};}"}

2
You can use 100.times{} instead of (1..100).each{}.
Krzysztof Atłasik

@yariash Thanks for the hint!
t0r0X

1

Julia, 77 bytes

for i=1:100;println("class Tuple$i {public Object _$(join(0:i-1,",_"));}")end

1

Lua, 128 106 Bytes

I'm still trying to find a way to directly work on a printed value, and not on a string.

Edit : Partially found it! I still need a string for the "_0,_1..." part, but it already is better :).

s=""for i=0,99 do s=(s..",_"..i):gsub("^,",s)print(("class Tuple"..(i+1).." {public Object ")..s..";}")end

Old 128 Bytes solution

s="class Tuple1 {public Object _0;}"print(s)for i=1,99 do s=s:sub(1,s:find";"-1):gsub("e%d+","e"..i+1)..",_"..i..";}"print(s)end

Ungolfed

s=""
for i=0,99
do
  s=(s..",_"..i)              -- concatenate s with ",_i"
      :gsub("^,",s)           -- remove the leading "," for ",_0"
  -- then print the concatenated string
  print(("class Tuple"..(i+1).." {public Object ")..s..";}")
end

1

Python 3, 111 109 105 bytes

[print('class Tuple%s {public Object %s;}'%(i,','.join('_%i'%j for j in range(i))))for i in range(1,101)]

It's not the shortest thing in the world, I'm just participating.

edit1: down 2 bytes by removing 0, in first range

edit2: I was unnecessarily casting int to str instead of just using %i... Down to 105.


Welcome, nice start! If interested, try range(i) in place of range(0,i) or since you used range twice, try r=range early then reference each call with just r (as in the other Python solutions).
Ray Toal

Ugh, I forgot range starts at 0 by default. Down 2 bytes, however, adding r=range; in the beginning results in exactly the same character count, I've tried that! :D
Issak

Same comment than I did to Dair: ',_'.join(map(str,range(i))) is 7 bytes shorter here.
409_Conflict

1

Mathematica, 130 Bytes

{"class Tuple",ToString[#]," {public Object ",StringReplace[ToString[#-1&/@Range@#],{" "|"{" ->"_","}"->";}\n"}]}&/@Range[100]<>""

Hint: \n can be replaced with a literal newline character.
LegionMammal978

1

Scala, 85 Bytes

for(u<-1 to 100)println(s"class Tuple$u {public Object _${0 to u-1 mkString ",_"};}")

1

Java, 116

(for the printing function only - according to some comments, this is in line with the rules)

import static java.lang.System.*;
public class T
{
    public static void main(String[] args)
    {
        T t = new T();
        t.p();
    }

    void p(){String s="_0";for(int i=0;i<100;){out.println("class Tuple"+ ++i+" {public Object "+ s + ";}");s+=",_"+i;}}
}

1

PHP, 112 bytes

<?php for($i=0;$i<100;$i++){$m.=$i==0?'_'.$i:',_'.$i;echo 'class Tuple'.($i+1).' {public Object '.$m.';}<br/>';}

You can save a few bytes by switching echo to double quotes where possible: <?php for($i=0;$i<100;$i++){$m.=$i==0?"_$i":",_$i";echo 'class Tuple'.($i+1)." {public Object $m;}\n";}
Samsquanch

1
@Samsquanch Also, instead of echo 'class Tuple'.($i+1)." {public Object $m;}\n";, you can use echo'class Tuple',$i+1," {public Object $m;}\n";, which is 3 bytes shorter. Also, according to the meta, you can remove the <?php and assume that your code will be executed with php -r "code". Also, you can do for(;++$i<101;)echo"class Tuple$i {public Object ",$m=($m?"$m,":'')."_$i",";}\n"; for 80 bytes (you need to replace the \n with a real newline). Try it here: ideone.com/oOzKtP
Ismael Miguel

1

Seriously, 55 bytes

2╤R`;r"$'_+"£M',j@k"c╙ò T╒α%d {pu▐V Object %s;}"⌡%`M'
j

Hexdump (reversible with xxd -r):

00000000: 32e2 95a4 5260 3b72 2224 275f 2b22 c2a3  2...R`;r"$'_+"..
00000010: 4d27 2c6a 406b 2263 e295 99c3 b220 54e2  M',j@k"c..... T.
00000020: 9592 ceb1 2564 207b 7075 e296 9056 204f  ....%d {pu...V O
00000030: 626a 6563 7420 2573 3b7d 22e2 8ca1 2560  bject %s;}"...%`
00000040: 4d27 0a6a                                M'.j

Try it online!

Yes, that newline is supposed to be there.

Explanation (newline replaced with \n):

2╤R`;r"$'_+"£M',j@k"c╙ò T╒α%d {pu▐V Object %s;}"⌡%`M'\nj
2╤R                                                       push range [1,100]
   `                                              `M      map:
    ;r                                                      push a, range(a)
      "$'_+"£M                                              map:
       $'_+                                                   stringify, prepend "_"
              ',j                                           join with commas
                 @k                                         swap and push stack as list
                   "c╙ò T╒α%d {pu▐V Object %s;}"⌡           decompress, result is
                                                              "class Tuple%d {public Object %s;}"
                                                 %          string format
                                                    '\nj  join with newlines

1

Japt, 52 bytes

Lo £`cÓ? TÕà{X} \{puÞV Object {Xò ®'_+Z}&}` r&59d} ·

The ? should be the literal byte 0x95. Test it online!

Japt has:

  • concise syntax to help shorten your code.
  • string compression to help shorten it even further.
  • lots of bugs to make you want to throw your computer out the window.

I can't even use a semicolon in the string because the function it's wrapped in wants to return everything after the semicolon. This should only be 46 bytes:

Lo £`cÓ? TÕà{X} \{puÞV Object {Xò ®'_+Z};}`} ·

But alas, it is not. I'll see if I can fix these bugs over the next couple of hours.

How it works

Lo £       }  // Generate the range [0..100), and map each item X in this range to:
`cÓ? TÕà{X}   //  "class Tuple" + X +
\{puÞV Object //  "{public Object" +
{Xò ®'_+Z}    //   Create the range [0..X] and map each item Z to "_" + Z.
              //   Upon stringification, this automatically inserts the commas.
&}`           //  + "&}"
r&59d         //  Replace the "&" with String.fromCharCode(59), or ";".
·             // Join the result with newlines.

Bah! Ninjaed by ~18 months! You need to increment the first X, by the way.
Shaggy

1

Javascript, 112 110 bytes

2 bytes off thanks @CᴏɴᴏʀO'Bʀɪᴇɴ.

_=>[...Array(100)].map((x,i)=>`class Tuple${++i} {public Object ${[...Array(i)].map((y,j)=>'_'+j)};}`).join`
`

Ungolfed:

_=>                                         // anonymous function
    [...Array(100)].map((x,i)=>             // 100 times [0..99]
        `class Tuple${++i} {public Object   // Tuple index + 1
            ${[...Array(i)].map(            // (index + 1) times
                (y,j)=>'_'+j                // _+j with j in [0..index]
            )}                              // Array without join prints comma in between
        ;}`                                 // as literal string
    ).join`\n`                              // display array line by line

1
I think you can replace ${i+1} with ${i++} and replace ${[...Array(i++)] with ${[...Array(i)].
Conor O'Brien

@CᴏɴᴏʀO'Bʀɪᴇɴ. Thanks, I've updated with ++i
removed

1

Groovy, 97 bytes

(1..100).each{println "class Tuple${it} {public Object ${(0..it-1).collect{"_$it"}.join(',')};}"}

Try it online!


1
You can user 100.times{} instead of (1..100).each{}, which saves 4 bytes.
Krzysztof Atłasik

You can also omit braces in join (join','), remove space after println, and replace .collect{} with *.with{}
Krzysztof Atłasik

1

Python 2, 96 Bytes

r=range
for i in r(1,101):print"class Tuple%d {public Object _%s;}"%(i,',_'.join(map(str,r(i))))

Thanks @DenkerAffe for the suggestion of using lambda.

Thanks @MathiasEttinger for the join idea.


2
You can golf this down to 111 bytes if you use a lambda in your reduce-call instead of defining a function for this: reduce(lambda x,y:'%s,_%s'%(x,y), r(i))
Denker

1
Or use ',_'.join(map(str,r(i))) for an extra 14 bytes removal (or 15, since you left an extra space in your reduce).
409_Conflict

1

C++, 164 159 157 bytes (155 as function only)

#include <iostream>
#define o std::cout<<
int main(){int j,i=0;for(;i<100;++i){o"class Tuple"<<i+1<<" {public Object _0";for(j=0;++j<=i;)o",_"<<j;o";}\n";}}

This is a full program. You can save 2 bytes in function only form if you replace int main() with void f().

Run code in Ideone

Ungolfed, including macro expansion

#include <iostream>
int main()
{
    int j,i=0;
    for(;i<100;++i)
    {
        std::cout << "class Tuple"<< i+1 <<" {public Object _0";
        for(j=0;++j<=i;)
            std::cout << ",_" << j;
        std::cout << ";}\n";
    }
}

Welcome to Programming Puzzles & Code Golf! Nice first answer! Unless stated otherwise in the challenge, you can always use functions instead of full programs, so you can save a few bytes by doing that. You still have to include iostream tho, since its needed for the output.
Denker

You might also want to do j=1 in your for loop, thus not having the if(j).
Ethiraric

@Ethiraric But of course! How sloppy of me. I guess I got too focused on the idea "remember to skip additions on first line" and ended up writing that too literally.
sendaran

@sendaran Or even may be for(int j=0;++j<=i;) would save one more byte.
Ethiraric

@Ethiraric Did that and shaved off an extra byte by extracting variable declarations, which enabled another empty expression.
sendaran
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.