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 é código-golfe , então o código mais curto em bytes vence!
public static void main(String[] args)
definitivamente atribuir uma função, se você quiser.n
gerador de -tiplos que escrevi em Java: github.com/kenzierocks/Tuplocity . Ele gera tuplas totalmente genéricas!Respostas:
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.
Explicação
fonte
vim
5654 pressionamentos de teclaComo 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:
fonte
yy
porY
.class Tuple101
, nãoclass Tuple100
como a pergunta.Geléia, 44 bytes
Minha primeira resposta Jelly. Experimente online!
fonte
Pitão,
535048 bytesExperimente 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
A sequência descompactada é
class Tuple%i {public Object _%s;}
fonte
s[
vez de todos+
.[
faz uma lista arbitrária es
concatena. Além disso, como você deseja[1, 2, ... 100]
, não[0, 1, .. 99]
useVS100
, e você também não precisaráh
.S
-trick! :) Já estava sentado para me livrar de tudo++++
, eu sabia que havia uma maneira melhor."
desnecessariamente.j<str><int>
isso não acontecerU
?CoffeeScript,
8684 bytesVeja a solução online
fonte
for
nem um depoisin
.)console.log"
? (Não sei coffeescript, isso é um truque geral.x? y:z
é completamente diferentex ? y:z
. Você pode dizerconsole.log?"hello"
mas nãoconsole.log"hello"
. Espaço em branco significativo. Às vezes agradável, às vezes estranho.Java,
160, 125 bytesObrigado a @DenkerAffe, @Denham Coote e @Mathias Ettinger pelas melhorias.
Java escrevendo java (porque alguém precisava!)
E a versão sem golfe
fonte
public static void main...
coisas.class Tuple1 {public Object _0,;} class Tuple2 {public Object _0,_1,;}
i++
da configuração do loop forString s = "_0"
para poders += ",_" + i
salvar um byte. Também resolverá o problema com o coma à direita. Você precisará iniciar o loop for passando de1
menor que101
e poderá remover 4 bytes extras convertendo(i+1)
apenas a mensagem na sua saídai
. Obviamente, você precisará imprimir antes de incrementars
.Oracle SQL 9.2,
138137 bytes@ 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.
fonte
Object _1
vez deObject _0
, de modo que serão necessários mais dois bytes (-1
). No entanto, o_
pode ser adicionado ao carvão deSYS_CONNECT_BY_PATH
em 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 _')
Lote, 128 bytes
Editar: salvou 10 bytes graças ao @Bob. Guardou 1 byte graças a @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.
fonte
enabledelayedexpansion
por 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/b
argumento deexit
.@echo off
Retina ,
8079 bytesA contagem de bytes assume a codificação ISO 8859-1.
Experimente online!
fonte
Powershell - 65 bytes
(Alterado em resposta ao comentário)
Todo o crédito a TimmyD
fonte
Perl 6 , 65 bytes
fonte
R -
199132123118 bytesVersão 4
Versão 3
Versão 2
Versão 1
fonte
=
para atribuição em vez de<-
.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 bytes
fonte
[*0..i]*',_'
uauJava, 103 bytes
Minha primeira vez aqui. Olá! Eu fui para uma expressão lambda Java8 (também conhecida como função anônima).
Versão ungolfed
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:
fonte
Python 2, 96
Python 3, 98
Uso:
Ungolfed:
formadores:
103
108
fonte
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
CJam, 53 bytes
Experimente aqui .
fonte
Groovy, 74 caracteres
"join ()" é imbatível ... Nova solução, graças a @yariash
Solução antiga, 78 caracteres:
fonte
100.times{}
vez de(1..100).each{}
.Julia, 77 bytes
fonte
Lua,
128106 BytesAinda 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 :).
Solução antiga de 128 bytes
Ungolfed
fonte
Python 3,
111109105 bytesNão é a coisa mais curta do mundo, estou apenas participando.
edit1: diminua 2 bytes removendo
0,
primeirorange
edit2: Eu estava lançando desnecessariamente
int
emstr
vez de apenas usar%i
... Abaixo de 105.fonte
range(i)
no lugar derange(0,i)
ou desde que você usourange
duas vezes, tenter=range
cedo e faça referência a cada chamada apenasr
(como nas outras soluções Python).range
começa em 0 por padrão. Abaixo de 2 bytes, no entanto, adicionarr=range;
no início resulta exatamente na mesma contagem de caracteres, tentei isso! : D',_'.join(map(str,range(i)))
é 7 bytes mais curto aqui.Mathematica, 130 bytes
fonte
\n
pode ser substituído por um caractere de nova linha literal.Scala, 85 bytes
fonte
Java, 116
(apenas para a função de impressão - de acordo com alguns comentários, isso está de acordo com as regras)
fonte
PHP, 112 bytes
fonte
<?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";
, você pode usarecho'class Tuple',$i+1," {public Object $m;}\n";
, que é 3 bytes mais curto. Além disso, de acordo com a meta, você pode remover<?php
e assumir que seu código será executadophp -r "code"
. Além disso, você pode fazer issofor(;++$i<101;)echo"class Tuple$i {public Object ",$m=($m?"$m,":'')."_$i",";}\n";
por 80 bytes (é necessário substituí-lo\n
por uma nova linha real). Tente aqui: ideone.com/oOzKtPSério, 55 bytes
Hexdump (reversível com
xxd -r
):Experimente online!
Sim, essa nova linha deveria estar lá.
Explicação (nova linha substituída por
\n
):fonte
Japonês, 52 bytes
o
?
deve ser o byte literal 0x95. Teste online!Japt tem:
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:
Mas, infelizmente, não é. Vou ver se consigo consertar esses bugs nas próximas duas horas.
Como funciona
fonte
X
, a propósito.Javascript,
112110 bytes2 bytes de desconto, graças a @ CᴏɴᴏʀO'Bʀɪᴇɴ .
Ungolfed:
fonte
${i+1}
por${i++}
e substituir${[...Array(i++)]
por${[...Array(i)]
.++i
Groovy, 97 bytes
Experimente online!
fonte
join','
), remover espaço após println e substituir.collect{}
por*.with{}
Python 2, 96 bytes
Obrigado @DenkerAffe pela sugestão de uso
lambda
.Obrigado @MathiasEttinger pela
join
ideia.fonte
reduce(lambda x,y:'%s,_%s'%(x,y), r(i))
',_'.join(map(str,r(i)))
para uma remoção extra de 14 bytes (ou 15, desde que você deixou um espaço extra no seureduce
).C ++,
164159157 bytes (155 apenas como função)Este é um programa completo. Você pode salvar 2 bytes no formato de função somente se substituir
int main()
porvoid f()
.Executar código no Ideone
Ungolfed, incluindo expansão macro
fonte
j=1
no seu loop for, sem ter oif(j)
.for(int j=0;++j<=i;)
, economizaria mais um byte.