100個のJava Tupleクラスを生成します


37

標準出力、または同等の言語で、次で始まる100行の(有効な)Javaコードに書き込むスクリプトを作成します。

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;}

最後の行はで始まる必要がありclass Tuple100ます。

これはなので、バイト単位の最短コードが勝ちです!


6
私は挑戦を受け入れます!実際、Javaでこれを行うつもりです!
アシュウィングプタ

関数を書くことはできますか、それとも完全なプログラムでなければなりませんか?
アシュウィングプタ

3
私はサイトを初めて使用するため、スクリプトを要求しましたが、関数を許可することは慣習的であり、Javaにとっては理にかなっていると聞きましたpublic static void main(String[] args)
レイトーアル

1
すばらしいです!レイありがとう!
アシュウィングプタ

それは十分に小さい場所ではありませんnが、Javaで書いた-tupleジェネレーターgithub.com/kenzierocks/Tuplocityを共有するのに最適な場所だと思います。完全に汎用のタプルを生成します!
オクタヴィアトガミ

回答:


8

Jolf、42バイト

ゼリーをこれまでで最高のスコアで破った場合、ボーナスポイントを獲得できますか?印刷できないものが含まれているので、ここオンラインで試してみてください。読みやすくするために、printableをそれぞれのaltインデックスに置き換えました。

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

説明

‼Μ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
私は考えます。このサイトで、後で新しいスコアが入った場合に受け入れられた回答を変更するのは適切ですか?
レイトーアル

6
@RayToalはい、それは適切であり、そうすることさえ提案されています。
コナーオブライエン

これの文字エンコーディングは何ですか?ゴルフ言語は頻繁に独自のエンコーディングを使用することを知っていますが、jolfが使用できるエンコーディングはわかりません。これは古いことです。
再帰的

@recursiveギリシャ語ISO-8859-7、これ:en.wikipedia.org/wiki/ISO/IEC_8859-7
Conor O'Brien

23

vim 56 54キーストローク

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

Vは下位互換性があるため、オンラインで試すことができます!

これはvimに最適なタスクです!あとでゴルフするかもしれません。また、これ<c-a>はControl-A を意味し、1回のキーストロークとしてカウントされることに注意してください。

説明:

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
あなたが1つのキーストロークとしてはControl-Aをカウントする場合は、置き換えることができますyyによってY
seequ

1
@Seeqハハ、私はあなたのコメントを見る直前に同じことを実現し、編集しました。偉大な心は同様に考える!
DJMcMayhem

これは、質問のとおりではclass Tuple101なくclass Tuple100
numbermaniac

1
@numbermaniac単純なオフバイワンエラー。それを指摘してくれてありがとう!今すぐ修正:)
DJMcMayhem

10

ゼリー、44バイト

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

私の最初のゼリーの答え。オンラインでお試しください!


私はそれを間違っていますか、これは文字列ではなく巨大なリストを出力するだけですか?
デンカー

@DenkerAffeそれは今働いているようです!Jellyに一時的なバグがありました。(また、リンクは私のソリューションの古いバージョンであったため、更新しました。)
リン

いいね...今のところ、CJamソリューションよりも9バイト短い!
レイトーアル

8

Pyth、53 50 48バイト

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

オンラインでお試しください!

range(1,100)での簡単な反復と、パックされた文字列からの書式設定による対応する文字列の構築。

説明

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

VS100#範囲全体で反復(1,100)
     %。 "} SüÆðQ´Ó3Ô«%&a´4UçõÛ"#文字列を解凍してフォーマットする
                              [#引数をフォーマットするためのリスト
                               N#タプルの数
                                j UN#結合オブジェクト番号...
                                 "、_"#...セパレーター上 "、_"

展開された文字列は class Tuple%i {public Object _%s;}


2つのゴルフ:s[それらすべての代わりに使用し+ます。[任意の長さのリストを作成し、s連結します。また、使用したいの[1, 2, ... 100]ではなく[0, 1, .. 99]、使用したいので、VS100どちらも必要ありませんh
-isaacg

@isaacgありがとう、-トリックについては知りませんSでした!:)すでにすべてを取り除くことに座っていた++++、私はより良い方法があることを知っていた。
デンカー

どういたしまして。ところで、"不必要に末尾を追加したようです。
isaacg

1
@isaacg j<str><int>しない理由はありUますか?
リルトシアスト

1
いいえ、そうでもありません。しましょう。
isaacg

7

CoffeeScript、86 84バイト

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

ソリューションをオンラインで見る


PPCGへようこそ!回答を改善する編集は一般に眉をひそめていることをお知らせするだけです(そして、それらがレビューキューに入る場合は拒否されるべきです)。そのため、人々が提案でコメントする可能性が高いため、自分でそれらを確認できます。:)(実際のヒントについては、私はあなたが目の前にあるスペースもない必要があると思うforも次々にin。)
マーティン・エンダー

DOESのconsole.log"作品?(コーヒースクリプトを知ってはいけない、それは一般的なトリックだ。
アディソンCrumpの

いいえ、スペースを削除します。:PIはそれが存在することを知っていますが、それが有効な構文であるかどうかはわかりません。
アディソンクランプ

@VoteToClose私は以前にそれを試しました(coffeescript.orgのライブトランスパイラーを使用しましたが、動作しませんでした)。
マーティンエンダー

@VoteToCloseあ、すみません。いいえ。どういうわけか、文法によってスペースが必要になりますが、なぜ(まだ)明確ではありません。たとえば、CoffeeScriptでの間隔の問題は、x? y:zとはまったく異なりx ? y:zます。言うことはできますconsole.log?"hello"が、できませんconsole.log"hello"。重要な空白。時々いい、時々変な。
レイトーアル

7

Java(登録商標)、160、125のバイト

@ DenkerAffe、@ Denham Coote、@ Mathias Ettingerの改善に感謝します。

Javaはjavaを記述しています

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

そして、非ゴルフバージョン

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

2
プログラミングパズルとコードゴルフへようこそ!チャレンジで特に明記されていない限り、完全なプログラムの代わりに常に関数を使用できます。したがって、すべてを保存するには、ここでJava8-lambda(結果を返す)を使用する必要がありますpublic static void main...
デンカー

4
PPCGへようこそ。この答えは...オブジェクトの宣言の末尾に余分なコンマが含まれてclass Tuple1 {public Object _0,;} class Tuple2 {public Object _0,_1,;}
デンハムクート

3
sysoutで(i + 1)ではなく(++ i)のループカウンターをインクリメントi++し、forループの設定から削除することにより、さらに3バイトを節約できます。
Denham Coote

起動して、バイトを保存String s = "_0"できるようにしてくださいs += ",_" + i。また、後続のコマの問題も解決します。あなたは、forループから行くを開始する必要があります1未満へ101と変換することにより、余分な4つのバイトを削除することができます(i+1)だけに、あなたの出力メッセージにi。明らかに、増分するに印刷する必要がありますs
409_Conflict

おかげで、これらすべてを完了しました。そして、java8-lambdaに間違いなく目を向けるつもりです。
SoloKix

6

Oracle SQL 9.2、 138 137バイト

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

@Peter 0/1の間違いを指摘してくれてありがとう。

クエリは、階層クエリのCONNECT BY CLAUSEを使用して100行を生成します。

LEVEL疑似列には、各行の行番号が含まれています。

SYS_CONNECT_BY_PATHは、各行の最初のパラメーターである行番号を連結し、2番目のパラメーターをセパレーターとして使用します。


説明を追加してください
Eumel

賢い:)これはのObject _1代わりに始まるObject _0ため、さらに2バイト(-1)かかります。しかし、_のチャーに添加することができるSYS_CONNECT_BY_PATH2つのもの再びバイトを低減する、代わりの連結REPLACE('class Tuple'||LEVEL||' {public Object'||SYS_CONNECT_BY_PATH(LEVEL-1,',_')||';}','t,_','t _')
ピーターラング

6

バッチ、128バイト

@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

編集:@Bobのおかげで10バイト保存されました。@EʀɪᴋᴛʜᴇGᴏʟғᴇʀのおかげで1バイト節約されました。


3
私はいつもの代わりに使用するのでは、また、コードゴルフにバッチを見て本当に幸せ取得@どこでも、あなたはファイルに呼ばれ、xおよび使用を追加し、出力をリダイレクトすることができ、出力として
デニス・バンGILS

@DennisvanGils悲しいことに、コマンドは標準出力にエコーされます。
ニール

enabledelayedexpansion117バイトの削除:gist.github.com/Elusive138/4cea555114a979954dcb-コンソールウィンドウが閉じてもかまわない場合は、/bからargを削除してさらに2つ保存できますexit
ボブ

@Neil lolわかりましたので、実行してみたところ、あなたが何をしたかがわかりました。非常に賢い。
アシュウィングプタ

初めに、使用@echo off
エリオットA.


5

Powershell-65バイト

(コメントに応じて修正)

TimmyDのすべてのクレジット

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

なぜ投票しないのですか?(これは私の初めてのポストではなく、偉大な大歓迎ですのでご注意ください!)
bulletprooffool


4

R - 199の 132 123 118バイト

バージョン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"))

バージョン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"))

バージョン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")

バージョン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
プログラミングパズルとコードゴルフへようこそ!これはコードゴルフ大会ですので、コードはできるだけ短くすることをお勧めします。変数名をそれぞれ1文字に短縮し、空白を削除して、=ではなく代入に使用することで開始できます<-
アレックスA.

144バイト: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")}
アレックスA.

問題ない。:)また、改訂履歴は「X分前に編集されました」というリンクからアクセスできるため、投稿本文でバージョンを追跡する必要はありません。
アレックスA.

(ただし、他の人があなたの改訂プロセスから学ぶことができるように、編集の要約または投稿ごとにあなたが改訂ごとに変更した内容を示す価値があるかもしれません)
-quintopia


4

Java、103バイト

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

ここに初めて来ました。こんにちは!Java8ラムダ式(別名匿名関数)を探しました。

ゴルフされていないバージョン

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

これを実際に使用するには、通常のJava8で、適切な機能インターフェースの変数に代入(またはキャスト)してから、そのメソッドを呼び出す必要があります。しかし、技術的には、関数はラムダ式そのものであるため、それだけをカウントしています。

入力パラメーターも必要です。これにより、タイプを指定せずにローカル変数として悪用できるため、数バイト節約できます。それが不正行為と見なされるかどうかわかりませんが、私にはルール内にあるように見えます:私は人々が関数の投稿が許可されていると述べているだけで、その関数を呼び出す必要があるとは見ていません。:)そして、実際にはパラメーターを読み取らないので、関数はまだ自己完結しています。任意の文字列、またはnullを渡すことができますが、それでも正しい出力が生成されます。

そして、それを使用する方法は次のとおりです。

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

使用法:

f()

ゴルフをしていない:

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

前者:

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)))

あなたのpython2の答えでは、最後の行は不完全なようです: print f(3) 与える: 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最後の行は結果です。インタラクティブに実行した場合にのみ印刷されます。
パチョリク


2

グルーヴィー、74文字

「join()」は無敵です... @yariashのおかげで新しいソリューション

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

古いソリューション、78文字:

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

2
100.times{}代わりに使用できます(1..100).each{}
クシシュトフアトラジク

@yariashヒントをありがとう!
t0r0X


1

Lua、128 106バイト

文字列ではなく、印刷された値を直接操作する方法を探しています。

編集:部分的にそれを見つけました!「_0、_1 ...」の部分にはまだ文字列が必要ですが、それはすでに優れています:)。

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

古い128バイトのソリューション

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

非ゴルフ

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バイト

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

世界で一番短いものではなく、私はただ参加しています。

edit1:0,最初に削除することにより2バイトダウンrange

edit2:単に105 を使用intするstr代わりに不必要にキャストしていました%i


ようこそ、いいスタートです!興味のある方は、試すrange(i)の代わりに、range(0,i)またはあなたが使用するのでrange二回、試すr=rangeだけで、各呼び出しを参照し、その後早期にr(他のPythonの解決策のように)。
レイトーアル

うーん、rangeデフォルトで0から始まるのを忘れていました。しかし、2バイト下r=range;に、先頭に追加するとまったく同じ文字数になります。私はそれを試してみました!:D
Issak

Dairに対して行ったのと同じコメント:',_'.join(map(str,range(i)))ここでは7バイト短くなっています。
409_Conflict

1

Mathematica、130バイト

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

ヒント:\nリテラルの改行文字に置き換えることができます。
LegionMammal978


1

Java、116

(印刷機能のみ-いくつかのコメントによると、これは規則に沿っています)

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バイト

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

可能な場合、エコーを二重引用符に切り替えることで、数バイトを節約できます。 <?php for($i=0;$i<100;$i++){$m.=$i==0?"_$i":",_$i";echo 'class Tuple'.($i+1)." {public Object $m;}\n";}
Samsquanch

1
@Samsquanchまた、の代わりにecho 'class Tuple'.($i+1)." {public Object $m;}\n";echo'class Tuple',$i+1," {public Object $m;}\n";3バイト短いを使用できます。また、メタによると、を削除し<?phpて、でコードが実行されると想定できますphp -r "code"。また、あなたはfor(;++$i<101;)echo"class Tuple$i {public Object ",$m=($m?"$m,":'')."_$i",";}\n";80バイトで行うことができます(あなたは置き換える必要があります\n実際の改行でます)。ここで試してください:ideone.com/oOzKtP
イスマエルミゲル

1

真剣に、55バイト

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

Hexdump(でリバーシブル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

オンラインでお試しください!

はい、その改行はそこにあるはずです。

説明(改行は \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バイト

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

?リテラルバイト0x95でなければなりません。オンラインでテストしてください!

Japtには:

  • 簡潔な構文コードを短くするための。
  • 文字列圧縮さらに短縮するための。
  • たくさんのバグコンピュータを窓の外に放り出したい。

文字列でセミコロンを使用することもできません。ラップされている関数はセミコロンの後のすべてを返したいためです。これは46バイトのみである必要があります。

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

しかし、悲しいかな、そうではありません。これらのバグを今後数時間で修正できるかどうかを確認します。

使い方

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.

ああ!〜18か月間忍者!Xちなみに、最初のを増やす必要があります。
シャギー

1

Javascript、112 110バイト

@CᴏɴᴏʀO'Bʀɪᴇɴに感謝2バイト。

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

ゴルフをしていない:

_=>                                         // 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+1}たり${i++}、置き換え${[...Array(i++)]たりできると思います${[...Array(i)]
コナーオブライエン

@CᴏɴᴏʀO'Bʀɪᴇɴ。おかげで、私は更新しました++i
削除

1

Groovy、97バイト

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

オンラインでお試しください!


1
4バイトを節約する(1..100).each {}の代わりに100.times {}を使用できます。
クシシュトフアトラジク

あなたはまた、(参加中括弧を省略することができますjoin',')、printlnの後に削除スペースを、と置き換える.collect{}*.with{}
クシシュトフAtłasik

1

Python 2、96バイト

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

@DenkerAffeを使用する提案をありがとうlambda

@MathiasEttingerのjoinアイデアに感謝します。


2
これに関数を定義する代わりに、reduce-callでラムダを使用する場合、これを111バイトまでゴルフできますreduce(lambda x,y:'%s,_%s'%(x,y), r(i))
。– Denker

1
または',_'.join(map(str,r(i)))、余分な14バイトの削除に使用します(または、15に余分なスペースを残したため、15 reduce)。
409_Conflict

1

C ++、 164 159 157バイト(関数として155バイトのみ)

#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";}}

これは完全なプログラムです。あなたが交換した場合にのみ形成機能で2つのバイトを保存することができint main()void f()

Ideoneでコードを実行する

マクロ展開を含む未ゴルフ

#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";
    }
}

プログラミングパズルとコードゴルフへようこそ!素敵な最初の答え!チャレンジで特に明記されていない限り、完全なプログラムの代わりに常に関数を使用できるため、それを行うことで数バイトを節約できます。出力に必要なため、iostream thoを含める必要があります。
デンカー

またj=1、forループで実行することもできますif(j)
Ethiraric

@Ethiraricしかし、もちろん!私のなんてずさんな。「最初の行で追加をスキップすることを忘れないでください」という考えに集中しすぎて、文字通り書き過ぎてしまったと思います。
sendaran

@sendaranまたは、さらにfor(int j=0;++j<=i;)1バイト節約できます。
Ethiraric

@Ethiraricそれを行い、変数宣言を抽出することで余分なバイトを削除し、別の空の式を有効にしました。
sendaran
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.