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로 할 것입니다!
Ashwin Gupta

함수를 작성할 수 있습니까? 아니면 전체 프로그램이어야합니까?
Ashwin Gupta

3
나는 사이트에 처음 왔기 때문에 스크립트를 요청했지만 함수를 허용하는 것이 관례라고 들었습니다. Java에 대해 많은 의미가 public static void main(String[] args)있으므로 원하는 경우 함수를 제공 하지 마십시오 .
Ray Toal

1
큰! 고마워요 레이!
Ashwin Gupta

충분히 작은 곳은 아니지만 nJava로 작성한 내 튜플 생성기 를 공유하기에 완벽한 장소라고 생각합니다 : github.com/kenzierocks/Tuplocity . 완전히 일반적인 튜플을 생성합니다!
Octavia Togami

답변:


8

줄프, 42 바이트

최고 점수로 젤리를 때리는 보너스 포인트를 얻습니까? 인쇄 할 수없는 파일이 포함되어 있으므로 여기에서 온라인 으로 시도해 볼 수 있습니다 . 나는 인쇄 할 수없는 것을 가독성을 위해 각각의 대체 색인으로 대체했습니다.

‼Μ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
나는 생각한다. 나중에 새로운 점수가 나오는 경우이 사이트에서 허용되는 답변을 변경하는 것이 적절합니까?
Ray Toal

6
@RayToal 예, 적절하며 그렇게하는 것이 좋습니다.
코너 오브라이언

이것에 대한 문자 인코딩은 무엇입니까? 골프 언어가 자주 자체 인코딩을 사용한다는 것을 알고 있지만 사용 가능한 인코딩 인코딩을 볼 수 없습니다. 나는 이것이 오래되었다는 것을 알고 있습니다.
재귀

@recursive 그리스어 ISO-8859-7, 이것 : en.wikipedia.org/wiki/ISO/IEC_8859-7
코너 오브라이언

23

vim 56 54 키 스트로크

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

V는 이전 버전과 호환 되므로 온라인으로 사용해 볼 수 있습니다!

이것은 vim에게 완벽한 작업입니다! 나중에 조금 더 골프를 칠 수도 있습니다. 또한 <c-a>Control-A 를 의미하며 한 번의 키 입력으로 계산됩니다.

설명:

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
당신은 하나의 키 입력으로 제어-A를 계산하는 경우, 당신은 대체 할 수 yyY.
seequ

1
@Seeq Haha, 나는 당신의 의견을보기 직전에 똑같은 것을 깨닫고 편집했습니다. 큰 마음은 다 비슷 하네!
DJMcMayhem

이것은 질문이 class Tuple101아닌 에있는 것처럼 보입니다 class Tuple100.
numbermaniac

1
@numbermaniac 간단한 off-by-one 오류입니다. 지적 해 주셔서 감사합니다! 지금 수정 :)
DJMcMayhem

10

젤리, 44 바이트

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

첫 번째 젤리 답변. 온라인으로 사용해보십시오!


내가 잘못하고 있거나 문자열 대신 거대한 목록을 출력합니까?
Denker

@DenkerAffe 지금 작동하는 것 같습니다! 젤리에 일시적인 버그가있었습니다. (또한 링크는 이전 버전의 솔루션에 대한 링크이므로 업데이트했습니다.)
Lynn

멋지다 ... 현재 CJam 솔루션보다 9 바이트 짧다!
Ray Toal

8

Pyth, 53 50 48 바이트

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

온라인으로 사용해보십시오!

범위 (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]not [0, 1, .. 99]을 사용 하고 싶지 VS100않기 때문에 어느 것도 필요하지 않습니다 h.
isaacg

@isaacg 감사합니다- S트릭 에 대해 몰랐습니다! :) 이미 모든 것을 제거하는 데 앉아 ++++있었고, 더 좋은 방법이 있다는 것을 알았습니다.
Denker

천만에요. 그건 그렇고, 당신은 "불필요하게 후행을 추가 한 것 같습니다 .
isaacg 2012

1
@isaacg 어떤 이유 j<str><int>U없습니까?
lirtosiast

1
아니 정말. 할 것이다.
isaacg 2016

7

CoffeeScript, 86 84 바이트

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

온라인 솔루션보기


PPCG에 오신 것을 환영합니다! 그냥 알려 답변은 일반적으로 눈살을 찌푸렸다하는 개선 편집 (그들이 검토 대기열에 끝날 경우 거부되어야한다). 따라서 사람들이 제안에 의견을 남길 가능성이 높으므로 직접 검토 할 수 있습니다. :) (실제 팁에 관해서는 나는 당신이 앞에있는 공간도 필요하다고 생각 for이나 이후의 하나 in.)
마틴 청산

합니까의 console.log"작업? (커피 스크립트를 모르는 것은 일반적인 트릭입니다.
Addison Crump

아니오, 공간을 제거하십시오. : PI 그것이 존재한다는 것을 알고, 그것이 유효한 구문인지는 모르겠습니다.
애디슨 크럼프

@VoteToClose 나는 그것을 일찍 시도했다 (coffeescript.org에서 라이브 트랜스 필러를 사용하면 작동하지 않았다).
Martin Ender

@VoteToClose 아, 죄송합니다. 아니요. 어쨌든 문법에 공간이 필요하지만 왜 (아직) 정확한지 명확하지 않습니다. 예를 들어 CoffeeScript의 간격은 크게 x? y:z다릅니다 x ? y:z. 당신은 말할 수 console.log?"hello"있지만 말할 수는 없습니다 console.log"hello". 중요한 공백. 때때로 좋고 때로는 이상합니다.
Ray Toal

7

자바, 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....
Denker

4
PPCG에 오신 것을 환영합니다. 이 답변에는 객체 선언의 끝에 추가 쉼표가 포함되어 있습니다 ...class Tuple1 {public Object _0,;} class Tuple2 {public Object _0,_1,;}
Denham Coote

3
루프 카운터를 (i + 1) 대신 sysout (++ i) i++에서 증가시키고 for 루프 설정에서 제거하여 추가 3 바이트를 절약 할 수 있습니다.
Denham Coote

바이트를 저장할 String s = "_0"수 있도록 시작해야합니다 s += ",_" + i. 또한 후행 코마 문제를 해결합니다. for 루프를에서 1보다 작게 시작해야하고 출력 메시지에서를로만 101변환하여 추가 4 바이트를 제거 할 수 있습니다 . 분명히, 증분 하기 전에 인쇄해야합니다 . (i+1)is
409_ 충돌

고마워,이 모든 일을 해냈으며, 분명히 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는 각 행의 첫 번째 매개 변수 인 행 번호를 연결하고 두 번째 매개 변수를 분리 자로 사용합니다.


설명을 추가해주세요
Eumel

Clever :)이 Object _1대신으로 시작 Object _0하므로 2 바이트 ( -1)가 더 필요합니다. 그러나,이 _의 문자에 추가 할 수 있습니다 SYS_CONNECT_BY_PATH다시 대신이 그하여 감소 합치의 바이트 :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라는 파일에 추가하고 출력으로 사용할 수 있습니다.
Dennis van Gils

@DennisvanGils 슬프게도 명령은 표준 출력으로 에코됩니다.
Neil

enabledelayedexpansion117 바이트 제거 : gist.github.com/Elusive138/4cea555114a979954dcb- 콘솔 창을 닫는 데 신경 쓰지 않으면에서 /barg를 제거하여 두 개를 더 절약 할 수 있습니다 exit.
Bob

@ Neil lol 괜찮아요. 방금 실행 해 보았습니다. 이제 당신이 한 일을 깨달았습니다. 매우 영리한.
Ashwin Gupta

처음에는@echo off
Elliot 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
프로그래밍 퍼즐 및 코드 골프에 오신 것을 환영합니다! 이것은 코드 골프 경쟁이기 때문에 코드를 최대한 짧게 만들고 싶을 것입니다. 변수 이름을 각각 단일 문자로 단축하고 공백을 제거하고 =대신 할당을 사용하여 시작할 수 <-있습니다.
Alex 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")}
Alex A.

문제 없어요. :) 또한 "X 분 전에 편집 한"링크를 통해 개정 내역에 액세스 할 수 있으므로 포스트 본문에서 버전을 추적 할 필요가 없습니다.
Alex A.

(편집 요약이나 다른 개정판에서 배울 수 있도록 각 개정판으로 변경 한 내용을 게시물에 표시하는 것이 좋습니다.)
Quintopia

4

루비, 71 바이트

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

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

4

자바, 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

파이썬 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

파이썬 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

@dieter 마지막 ​​줄이 결과입니다. 대화식으로 실행할 때만 인쇄됩니다.
pacholik


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{}.
Krzysztof Atłasik

@yariash 힌트 주셔서 감사합니다!
t0r0X 2016 년

1

줄리아, 77 바이트

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

1

루아, 128106 바이트

나는 여전히 문자열이 아닌 인쇄 된 값으로 직접 작업하는 방법을 찾으려고 노력하고 있습니다.

편집 : 부분적으로 찾았습니다! 여전히 "_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

파이썬 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 : 불필요하게 캐스팅 intstr사용 하는 대신 %i...에서 105로 캐스팅 했습니다 .


환영합니다, 좋은 시작입니다! 관심이 있다면 두 번 이나 range(i)대신 range(0,i)사용하거나 range시도한 r=range다음 일찍 시도한 다음 각 호출을 참조 r하십시오 (다른 Python 솔루션에서 와 같이).
Ray Toal

어, 나는 range기본적으로 0에서 시작하는 것을 잊었다 . 그러나 2 바이트를 줄이지 만 r=range;시작 부분에 추가하면 정확히 동일한 문자 수를 얻을 수 있습니다. : D
Issak

내가 Dair에 했던 것과 같은 의견 : ',_'.join(map(str,range(i)))7 바이트가 짧습니다.
409_Conflict

1

매스 매 티카, 130 바이트

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

힌트 : \n리터럴 개행 문자로 대체 할 수 있습니다.
LegionMammal978

1

스칼라, 85 바이트

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

1

자바, 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 또한 대신 3 바이트 더 짧은을 echo 'class Tuple'.($i+1)." {public Object $m;}\n";사용할 수 있습니다 echo'class Tuple',$i+1," {public Object $m;}\n";. 또한 메타에 따르면를 제거하고 <?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

16 진 덤프 (와 가역 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

온라인으로 사용해보십시오!

예, 그 줄 바꿈이 있어야합니다.

설명 (줄 바꾸기가으로 바 replaced \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

apt, 52 바이트

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

?문자 그대로 바이트에 0x95해야합니다. 온라인으로 테스트하십시오!

apt은 :

  • 간결한 구문 으로 코드를 단축하십시오.
  • 문자열 압축 으로 더욱 단축 할 수 있습니다.
  • 컴퓨터를 창 밖으로 버리고 싶게 만드는 많은 버그 .

줄 바꿈 된 함수는 세미콜론 다음에 모든 것을 반환하기 때문에 문자열에 세미콜론을 사용할 수도 없습니다. 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

자바 스크립트, 112110 바이트

@ CᴏɴᴏʀO'Bʀɪᴇɴ 감사 합니다.

_=>[...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)].
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ. 감사합니다. 다음으로 업데이트되었습니다.++i
제거됨

1

그루비, 97 바이트

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

온라인으로 사용해보십시오!


1
(1..100) .each {} 대신 100.times {}를 사용하여 4 바이트를 절약 할 수 있습니다.
Krzysztof Atłasik

또한 결합 ( join',') 에서 중괄호를 생략 하고 println 후 공백을 제거하고 다음으로 대체 할 수 .collect{}있습니다.*.with{}
Krzysztof Atłasik

1

파이썬 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.

join아이디어를 주셔서 감사합니다 @MathiasEttinger .


2
이것을 위해 함수를 정의하는 대신 감소 호출에 람다를 사용하면 이것을 111 바이트로 골프화 할 수 있습니다.reduce(lambda x,y:'%s,_%s'%(x,y), r(i))
Denker

1
또는 ',_'.join(map(str,r(i)))여분의 14 바이트를 제거하는 데 사용하십시오 (또는 여분의 공간을 남겨 두었으므로 15 reduce).
409_ 충돌

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를 포함해야합니다.
Denker

j=1for 루프에서 수행하고 싶을 수도 있습니다 if(j).
Ethiraric

@Ethiraric 그러나 물론! 내가 얼마나 조잡 했어? 나는 "첫 줄에 추가 사항을 건너 뛰는 것을 잊지 말라"는 아이디어에 너무 집중하여 그 말을 너무 많이 쓰는 것으로 끝났다고 생각합니다.
sendaran

@sendaran 또는 심지어 for(int j=0;++j<=i;)하나 이상의 바이트를 절약 할 수 있습니다 .
Ethiraric

@Ethiraric 그렇게하고 변수 선언을 추출하여 여분의 바이트를 줄였습니다.
sendaran
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.