Gere 100 classes de tupla Java


37

Escreva um script que grave na saída padrão, ou no equivalente da sua linguagem, 100 linhas de código Java (válido) que começa com:

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

A última linha deve começar com class Tuple100.

Isso é , então o código mais curto em bytes vence!


6
Eu aceito o desafio! Na verdade, eu vou fazer isso em Java!
Ashwin Gupta

Posso escrever uma função ou precisa ser um programa completo?
Ashwin Gupta 04/02

3
Sou novo no site, então solicitei um script, mas tenho ouvido que é habitual permitir funções, e isso faz muito sentido para Java, para evitar public static void main(String[] args)definitivamente atribuir uma função, se você quiser.
quer

11
Ótimo! Obrigado Ray!
Ashwin Gupta 04/02

Não é nem de longe pequeno o suficiente, mas acho que esse é o lugar perfeito para compartilhar meu ngerador de -tiplos que escrevi em Java: github.com/kenzierocks/Tuplocity . Ele gera tuplas totalmente genéricas!
Octavia Togami 4/16

Respostas:


8

Jolf, 42 bytes

Recebo pontos de bônus por derrotar Jelly com a melhor pontuação de todos os tempos? Contém imprimíveis, então você pode tentar online aqui . Substituí os não imprimíveis pelo respectivo índice alt para facilitar a leitura.

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

Explicação

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

11
Eu suponho. É apropriado neste site alterar a resposta aceita se uma nova pontuação chegar mais tarde?
precisa

6
@ RayToal Sim, é apropriado e até sugerido para fazê-lo.
Conor O'Brien

Qual é a codificação de caracteres para isso? Sei que os idiomas de golfe costumam usar sua própria codificação, mas não consigo ver qual codificação o jolf poderia estar usando. Eu sei que isso é velho.
recursivo

@recursive O grego ISO-8859-7, este: en.wikipedia.org/wiki/ISO/IEC_8859-7
Conor O'Brien

23

vim 56 54 pressionamentos de tecla

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

Como o V é compatível com versões anteriores, você pode experimentá-lo online!

Esta é a tarefa perfeita para o vim! Eu poderia jogar um pouco mais tarde. Observe também que isso <c-a>significa Control-A e conta como um toque de tecla.

Explicação:

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.

11
Se você contar Control-A como uma tecla, poderá substituir yypor Y.
seequ

11
@Seeq Haha, acabei de perceber a mesma coisa e a editei logo antes de ver seu comentário. Mentes brilhantes pensam igual!
DJMcMayhem

Parece que isso vai acontecer class Tuple101, não class Tuple100como a pergunta.
numbermaniac

11
@numbermaniac Simples erro off-by-one. Obrigado por apontar isso! Corrigido agora :)
DJMcMayhem

10

Geléia, 44 bytes

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

Minha primeira resposta Jelly. Experimente online!


Estou fazendo errado ou isso apenas gera uma lista gigante em vez de uma string?
Denker 03/02

@DenkerAffe Parece estar funcionando agora! Houve um erro temporário em Jelly. (Além disso, a ligação era uma versão antiga da minha solução, então eu tenho atualizado-lo.)
Lynn

Bom ... a partir de agora é 9 bytes menor que a solução CJam!
quer

8

Pitão, 53 50 48 bytes

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

Experimente online!

Iteração direta acima do intervalo (1.100) e construindo a cadeia de resposta a corrosão a partir de uma cadeia compactada através da formatação.

Explicação

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

Iterar VS100 # acima do intervalo (1.100)
     %. "} SüÆðQ´Ó3Ô«% & a´4UçõÛ "# Descompacte a string e formate-a
                              [# Lista para argumentos de formatação
                               N # Número da tupla
                                j UN # Unir números de objetos ...
                                 ", _" # ... no separador ", _"

A sequência descompactada é class Tuple%i {public Object _%s;}


Dois campos de golfe: use em s[vez de todos +. [faz uma lista arbitrária e sconcatena. Além disso, como você deseja [1, 2, ... 100], não [0, 1, .. 99]use VS100, e você também não precisará h.
Isaacg

@isaacg Obrigado, não sabia sobre o S-trick! :) Já estava sentado para me livrar de tudo ++++, eu sabia que havia uma maneira melhor.
Denker 03/02

De nada. A propósito, você parece ter adicionado uma trilha "desnecessariamente.
Isaacg

11
@isaacg Existe alguma razão para j<str><int>isso não acontecer U?
lirtosiast

11
Não, não mesmo. Vai fazer.
Isaacg

7

CoffeeScript, 86 84 bytes

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

Veja a solução online


Bem-vindo ao PPCG! Apenas para informar que as edições que melhoram as respostas geralmente são desaprovadas (e devem ser rejeitadas se elas acabarem na fila de revisão). Portanto, é mais provável que as pessoas comentem com sugestões, para que você possa revisá-las. :) (Quanto a dicas reais Acho que você precisa nem o espaço em frente fornem um depois in.)
Martin Ender

Funciona console.log"? (Não sei coffeescript, isso é um truque geral.
Addison Crump

Não, removendo o espaço. : PI sei que existe, só não sei se isso é sintaxe válida.
Addison Crump #

@VoteToClose Eu tentei isso antes (usando o transpiler ao vivo no coffeescript.org e não funcionou).
Martin Ender

@VoteToClose Oh, desculpe, não vi isso. Não. De alguma forma, o espaço é exigido pela gramática, mas não está exatamente claro para mim o porquê (ainda). O espaçamento é muito importante no CoffeeScript, por exemplo, x? y:zé completamente diferente x ? y:z. Você pode dizer console.log?"hello"mas não console.log"hello". Espaço em branco significativo. Às vezes agradável, às vezes estranho.
quer

7

Java, 160 , 125 bytes

Obrigado a @DenkerAffe, @Denham Coote e @Mathias Ettinger pelas melhorias.

Java escrevendo java (porque alguém precisava!)

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

E a versão sem golfe

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

2
Bem-vindo à programação de quebra-cabeças e código de golfe! Salvo indicação em contrário no desafio, você também pode usar funções em vez de programas completos. Portanto, você deve usar um Java8-lambda (que retorna o resultado) aqui para economizar todas as public static void main...coisas.
Denker 03/02

4
Bem-vindo ao PPCG. Essa resposta inclui uma vírgula extra no final das declarações de objetos ...class Tuple1 {public Object _0,;} class Tuple2 {public Object _0,_1,;}
Denham Coote

3
Você pode salvar outros 3 bytes incrementando o contador de loop no sysout (++ i) em vez de (i + 1) e removendo i++da configuração do loop for
Denham Coote

Você deve iniciar o seu String s = "_0"para poder s += ",_" + isalvar um byte. Também resolverá o problema com o coma à direita. Você precisará iniciar o loop for passando de 1menor que 101e poderá remover 4 bytes extras convertendo (i+1)apenas a mensagem na sua saída i. Obviamente, você precisará imprimir antes de incrementar s.
409_Conflict

Obrigado, já fiz todas essas coisas e definitivamente vou dar uma olhada no java8-lambda.
SoloKix 06/02

6

Oracle SQL 9.2, 138 137 bytes

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

@ Peter Obrigado por apontar o erro 0/1.

A consulta usa o CONNECT BY CLAUSE da consulta hierárquica para gerar 100 linhas.

A pseudocoluna LEVEL contém o número da linha de cada linha.

SYS_CONNECT_BY_PATH concatena o primeiro parâmetro, o número da linha, de cada linha e usa o segundo parâmetro como separador.


Por favor, adicione um pouco de explicação
Eumel

Inteligente :) Isso começa com em Object _1vez de Object _0, de modo que serão necessários mais dois bytes ( -1). No entanto, o _pode ser adicionado ao carvão de SYS_CONNECT_BY_PATHem vez de concatenação, reduzindo-a em dois os bytes de novo:REPLACE('class Tuple'||LEVEL||' {public Object'||SYS_CONNECT_BY_PATH(LEVEL-1,',_')||';}','t,_','t _')
Peter Lang

6

Lote, 128 bytes

@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

Editar: salvou 10 bytes graças ao @Bob. Guardou 1 byte graças a @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.


3
Eu sempre ficar muito feliz em ver lote de golf código, também, em vez de usar @ em todos os lugares, você pode redirecionar a saída para anexar a um arquivo chamado x e usar isso como saída
Dennis van Gils

@DennisvanGils Infelizmente, os comandos são repetidos na saída padrão.
Neil

Eliminado enabledelayedexpansionpor 117 bytes: gist.github.com/Elusive138/4cea555114a979954dcb - se você não se importa com o fechamento da janela do console, pode salvar mais dois removendo o /bargumento de exit.
Bob

@ Neil lol ok, então eu apenas tentei executá-lo e agora eu percebo o que você fez. Muito esperto.
Ashwin Gupta

No início, use@echo off
Elliot A.


5

Powershell - 65 bytes

(Alterado em resposta ao comentário)

Todo o crédito a TimmyD

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

Por que votar? (Por favor note que este é meu primeiro post nunca, não um grande bem-vindo?)
bulletprooffool


4

R - 199 132 123 118 bytes

Versão 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"))

Versão 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"))

Versão 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")

Versão 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
Bem-vindo à programação de quebra-cabeças e código de golfe! Como se trata de uma competição de golfe com códigos, convém tornar seu código o mais curto possível. Você pode começar encurtando os nomes de variáveis ​​para um único caractere cada, removendo o espaço em branco e usando =para atribuição em vez de <-.
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.

Sem problemas. :) Além disso, você não precisa acompanhar suas versões no corpo da postagem, pois o histórico de revisões é acessível através do link "editado X minutos atrás".
Alex A.

(embora possa valer a pena dar alguma indicação, em seus resumos de edição ou no post o que você mudou com cada revisão para que outras pessoas pudessem aprender com seu processo de revisão)
quinta

4

Ruby, 71 bytes

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

2
TIL [*0..i]*',_'uau
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);}

Minha primeira vez aqui. Olá! Eu fui para uma expressão lambda Java8 (também conhecida como função anônima).

Versão ungolfed

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

Para realmente usar isso, como de costume no Java8, você deve atribuí-lo a uma variável de (ou convertê-lo em) uma interface funcional apropriada e, em seguida, chamar seu método; mas tecnicamente, a função é apenas a própria expressão lambda, então estou contando apenas isso.

Ele também requer um parâmetro de entrada, o que me poupa alguns bytes, pois posso abusá-lo como uma variável local sem precisar especificar seu tipo. Não tenho certeza se isso é considerado trapaça, mas para mim parece estar dentro das regras: só vi pessoas afirmarem que postar uma função é permitida, não como essa função precisa ser invocada. :) E na verdade não lê o parâmetro, portanto a função ainda é independente; você pode passar qualquer String para ele, ou mesmo nulo, e ainda assim produzirá a saída correta.

E aqui está como usá-lo:

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

Uso:

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

formadores:

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

Em sua resposta python2 a última linha parece ser incompleto: print f(3) dá: 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 A última linha é um resultado. Ele é impresso apenas quando você o executa interativamente.
pacholik 03/02


2

Groovy, 74 caracteres

"join ()" é imbatível ... Nova solução, graças a @yariash

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

Solução antiga, 78 caracteres:

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

2
Você pode usar em 100.times{}vez de (1..100).each{}.
Krzysztof Atłasik

@yariash Obrigado pela dica!
T0r0X 17/05

1

Julia, 77 bytes

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

1

Lua, 128 106 Bytes

Ainda estou tentando encontrar uma maneira de trabalhar diretamente em um valor impresso, e não em uma string.

Edit: Parcialmente encontrado! Eu ainda preciso de uma string para a parte "_0, _1 ...", mas já é melhor :).

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

Solução antiga de 128 bytes

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

Não é a coisa mais curta do mundo, estou apenas participando.

edit1: diminua 2 bytes removendo 0,primeirorange

edit2: Eu estava lançando desnecessariamente intem strvez de apenas usar %i... Abaixo de 105.


Bem-vindo, bom começo! Se estiver interessado, tente range(i)no lugar de range(0,i)ou desde que você usou rangeduas vezes, tente r=rangecedo e faça referência a cada chamada apenas r(como nas outras soluções Python).
quer

Ugh, eu esqueci rangecomeça em 0 por padrão. Abaixo de 2 bytes, no entanto, adicionar r=range;no início resulta exatamente na mesma contagem de caracteres, tentei isso! : D
Issak 03/02

O mesmo comentário que fiz para Dair : ',_'.join(map(str,range(i)))é 7 bytes mais curto aqui.
409_Conflict 04/02

1

Mathematica, 130 bytes

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

Dica: \npode ser substituído por um caractere de nova linha literal.
LegionMammal978 03/02

1

Scala, 85 bytes

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

1

Java, 116

(apenas para a função de impressão - de acordo com alguns comentários, isso está de acordo com as regras)

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

Você pode economizar alguns bytes por comutação de eco para aspas duplas sempre que possível:<?php for($i=0;$i<100;$i++){$m.=$i==0?"_$i":",_$i";echo 'class Tuple'.($i+1)." {public Object $m;}\n";}
Samsquanch

11
@Samsquanch Além disso, em vez de echo 'class Tuple'.($i+1)." {public Object $m;}\n";, você pode usar echo'class Tuple',$i+1," {public Object $m;}\n";, que é 3 bytes mais curto. Além disso, de acordo com a meta, você pode remover <?phpe assumir que seu código será executado php -r "code". Além disso, você pode fazer isso for(;++$i<101;)echo"class Tuple$i {public Object ",$m=($m?"$m,":'')."_$i",";}\n";por 80 bytes (é necessário substituí-lo \npor uma nova linha real). Tente aqui: ideone.com/oOzKtP
Ismael Miguel

1

Sério, 55 bytes

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

Hexdump (reversível com 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

Experimente online!

Sim, essa nova linha deveria estar lá.

Explicação (nova linha substituída por \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

Japonês, 52 bytes

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

o ? deve ser o byte literal 0x95. Teste online!

Japt tem:

  • sintaxe concisa para ajudar a diminuir o seu código.
  • compressão de string para ajudar a encurtar ainda mais.
  • muitos bugs para fazer você querer jogar seu computador pela janela.

Eu não posso nem usar um ponto e vírgula na string porque a função em que ele está envolvido quer retornar tudo após o ponto e vírgula. Isso deve ter apenas 46 bytes:

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

Mas, infelizmente, não é. Vou ver se consigo consertar esses bugs nas próximas duas horas.

Como funciona

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 por ~ 18 meses! Você precisa incrementar o primeiro X, a propósito.
Shaggy

1

Javascript, 112 110 bytes

2 bytes de desconto, graças a @ 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

11
Eu acho que você pode substituir ${i+1}por ${i++}e substituir ${[...Array(i++)]por ${[...Array(i)].
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ. Obrigado, eu atualizei com++i
removido


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

Obrigado @DenkerAffe pela sugestão de uso lambda.

Obrigado @MathiasEttinger pela joinideia.


2
Você pode jogar isso até 111 bytes se usar um lambda na sua chamada de redução em vez de definir uma função para isso:reduce(lambda x,y:'%s,_%s'%(x,y), r(i))
Denker

11
Ou use ',_'.join(map(str,r(i)))para uma remoção extra de 14 bytes (ou 15, desde que você deixou um espaço extra no seu reduce).
409_Conflict 04/02

1

C ++, 164 159 157 bytes (155 apenas como função)

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

Este é um programa completo. Você pode salvar 2 bytes no formato de função somente se substituir int main()por void f().

Executar código no Ideone

Ungolfed, incluindo expansão macro

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

Bem-vindo à programação de quebra-cabeças e código de golfe! Boa primeira resposta! Salvo indicação em contrário no desafio, você sempre pode usar funções em vez de programas completos, para salvar alguns bytes fazendo isso. Você ainda precisa incluir o iostream tho, pois é necessário para a saída.
Denker

Você também pode querer fazer j=1no seu loop for, sem ter o if(j).
Etirárico

@ Etirárico Mas é claro! Que desleixo da minha parte. Acho que fiquei muito focado na idéia "lembre-se de pular adições na primeira linha" e acabei escrevendo isso literalmente.
sendaran

@sendaran Ou talvez seja for(int j=0;++j<=i;), economizaria mais um byte.
Ethiraric

@Ethiraric Fez isso e eliminou um byte extra extraindo declarações de variáveis, o que permitiu outra expressão vazia.
sendaran
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.