Napisz skrypt zapisujący na standardowym wyjściu lub w ekwiwalencie Twojego języka 100 wierszy (prawidłowego) kodu Java, który zaczyna się od:
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;}
Ostatnia linia powinna zaczynać się od class Tuple100
.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach!
public static void main(String[] args)
więc zdecydowanie daj funkcję, jeśli chcesz.n
generatorem -tuple napisanym w Javie: github.com/kenzierocks/Tuplocity . Generuje w pełni ogólne krotki!Odpowiedzi:
Jolf, 42 bajty
Czy dostaję punkty bonusowe za pokonanie Jelly z najlepszym wynikiem w historii? Zawiera materiały niedrukowalne, więc możesz spróbować tutaj online . Zastąpiłem te niedrukowalne odpowiednim indeksem alt dla czytelności.
Wyjaśnienie
źródło
vim
5654 naciśnięcia klawiszyPonieważ V jest wstecznie kompatybilny, możesz wypróbować online!
To idealne zadanie dla vima! Mogę zagrać w golfa trochę później. Zauważ też, że
<c-a>
oznacza to Control-A i liczy się jako jedno naciśnięcie klawisza.Wyjaśnienie:
źródło
yy
przezY
.class Tuple101
, żeclass Tuple100
tak nie będzie , jak zadaje pytanie.Galaretka, 44 bajty
Moja pierwsza galaretka odpowiedź. Wypróbuj online!
źródło
Pyth,
535048 bajtówWypróbuj online!
Prosta iteracja poza zakresem (1100) i budowanie odpowiedniego ciągu znaków z zapakowanego ciągu poprzez jego sformatowanie.
Wyjaśnienie
Rozpakowany ciąg to
class Tuple%i {public Object _%s;}
źródło
s[
pola golfowe: użyj zamiast nich wszystkich+
.[
tworzy dowolną listę długości is
konkatenuje ją. Ponadto, ponieważ chcesz[1, 2, ... 100]
, nie[0, 1, .. 99]
korzystajVS100
, i nie będziesz też potrzebowaćh
.S
-tricku! :) Siedziałem już na pozbyciu się wszystkiego++++
, wiedziałem, że jest lepszy sposób."
niepotrzebnie końcowe .j<str><int>
nieU
?CoffeeScript,
8684 bajtówZobacz rozwiązanie online
źródło
for
ani po nimin
.)console.log"
działa (Nie znam scenariusza kawowego, to ogólna sztuczka.x? y:z
są zupełnie inne niżx ? y:z
. Możesz powiedzieć,console.log?"hello"
ale nieconsole.log"hello"
. Znaczące białe znaki. Czasami miło, czasem dziwnie.Java,
160, 125 bajtówDzięki @DenkerAffe, @Denham Coote i @Mathias Ettinger za ulepszenia.
Java Java Writing (bo ktoś musiał!)
I wersja bez golfa
źródło
public static void main...
rzeczy.class Tuple1 {public Object _0,;} class Tuple2 {public Object _0,_1,;}
i++
z konfiguracji pętli forString s = "_0"
, abyś mógłs += ",_" + i
i zapisał bajt. Rozwiąże również problem ze śpiączką końcową. Będziesz musiał uruchomić pętlę for od1
mniejszej niż101
i będziesz mógł usunąć dodatkowe 4 bajty, konwertując(i+1)
tylko komunikat wyjściowy nai
. Oczywiście, trzeba wydrukować przed inkrementacjis
.Oracle SQL 9.2,
138137 bajtów@ Peter Dzięki za wskazanie błędu 0/1.
Kwerenda wykorzystuje zapytanie hierarchiczne CONNECT BY CLAUSE do wygenerowania 100 wierszy.
Pseudokolumna LEVEL zawiera numer każdego wiersza.
SYS_CONNECT_BY_PATH konkatenuje pierwszy parametr, numer wiersza każdego wiersza i używa drugiego parametru jako separatora.
źródło
Object _1
zamiastObject _0
, więc zajmie to kolejne dwa bajty (-1
). Jednakże,_
może być dodawany do char zSYS_CONNECT_BY_PATH
zamiast złączenie, zmniejszając ją o dwa bajty te znowu:REPLACE('class Tuple'||LEVEL||' {public Object'||SYS_CONNECT_BY_PATH(LEVEL-1,',_')||';}','t,_','t _')
Partia, 128 bajtów
Edycja: Zapisano 10 bajtów dzięki @Bob. Zapisano 1 bajt dzięki @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.
źródło
enabledelayedexpansion
dla 117 bajtów: gist.github.com/Elusive138/4cea555114a979954dcb - jeśli nie przeszkadza ci zamknięcie okna konsoli, możesz zapisać dwa kolejne, usuwając/b
argument zexit
.@echo off
Siatkówka ,
8079 bajtówLiczba bajtów zakłada kodowanie ISO 8859-1.
Wypróbuj online!
źródło
PowerShell - 65 bajtów
(Poprawiony w odpowiedzi na komentarz)
Cały kredyt dla TimmyD
źródło
Perl 6 , 65 bajtów
źródło
R -
199132123118 bajtówWersja 4
Wersja 3
Wersja 2
Wersja 1
źródło
=
zamiast przypisania<-
.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")}
Rubinowy, 71 bajtów
źródło
[*0..i]*',_'
wowJava, 103 bajty
Mój pierwszy raz tutaj. Cześć! Wybrałem wyrażenie lambda Java8 (inaczej anonimowa funkcja).
Wersja bez golfa
Aby faktycznie tego użyć, jak zwykle w Javie 8, musisz przypisać ją do zmiennej odpowiedniego (lub rzutować) odpowiedniego interfejsu funkcjonalnego, a następnie wywołać jej metodę; ale technicznie rzecz biorąc, funkcja jest tylko samym wyrażeniem lambda, więc liczę tylko to.
Wymaga również parametru wejściowego, który oszczędza mi kilka bajtów, ponieważ mogę nadużywać go jako zmiennej lokalnej bez konieczności określania jego typu. Nie jestem pewien, czy uważa się to za oszustwo, ale wydaje mi się, że jest to zgodne z regułami: widziałem tylko, że ludzie twierdzą, że publikowanie funkcji jest dozwolone, a nie jak należy ją wywoływać. :) I tak naprawdę nie odczytuje parametru, więc funkcja jest nadal samodzielna; możesz przekazać dowolny ciąg znaków, a nawet zerowy, i nadal będzie generować poprawny wynik.
A oto jak go użyć:
źródło
Python 2, 96
Python 3, 98
Stosowanie:
Nie golfowany:
dawni:
103
108
źródło
print f(3)
daje: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 bajty
Wypróbuj tutaj .
źródło
Groovy, 74 znaki
„join ()” jest nie do pobicia ... Nowe rozwiązanie, dzięki @yariash
Stare rozwiązanie, 78 znaków:
źródło
100.times{}
zamiast(1..100).each{}
.Julia, 77 bajtów
źródło
Lua,
128106 bajtówNadal próbuję znaleźć sposób na bezpośrednią pracę na wartości drukowanej, a nie na łańcuchu.
Edycja: Częściowo go znalazłem! Nadal potrzebuję łańcucha dla części „_0, _1 ...”, ale już jest lepiej :).
Stare rozwiązanie 128 bajtów
Bez golfa
źródło
Python 3,
111109105 bajtówTo nie jest najkrótsza rzecz na świecie, po prostu uczestniczę.
edit1: zmniejsz o 2 bajty, usuwając
0,
najpierwrange
edit2: Niepotrzebnie przesylałem
int
nastr
zamiast używać tylko%i
... Do 105.źródło
range(i)
zamiastrange(0,i)
lub ponieważ używałeś gorange
dwukrotnie, spróbujr=range
wcześniej, a następnie odwołaj się do każdego wywołania za pomocą justr
(jak w innych rozwiązaniach Python).range
zaczyna domyślnie od 0. Jednakr=range;
zmniejszenie o 2 bajty, dodając na początku dokładnie taką samą liczbę znaków, próbowałem tego! : D',_'.join(map(str,range(i)))
jest tutaj o 7 bajtów krótszy.Mathematica, 130 bajtów
źródło
\n
można zastąpić dosłownie znakiem nowej linii.Scala, 85 bajtów
źródło
Java, 116
(tylko dla funkcji drukowania - według niektórych komentarzy jest to zgodne z regułami)
źródło
PHP, 112 bajtów
źródło
<?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";
można użyćecho'class Tuple',$i+1," {public Object $m;}\n";
, który wynosi 3 bajty krótszy. Ponadto, zgodnie z meta, możesz usunąć<?php
i założyć, że twój kod zostanie wykonany za pomocąphp -r "code"
. Możesz także zrobićfor(;++$i<101;)echo"class Tuple$i {public Object ",$m=($m?"$m,":'')."_$i",";}\n";
dla 80 bajtów (musisz zastąpić\n
prawdziwą nową linią). Wypróbuj tutaj: ideone.com/oOzKtPPoważnie, 55 bajtów
Hexdump (odwracalny z
xxd -r
):Wypróbuj online!
Tak, ta nowa linia powinna tam być.
Objaśnienie (nowa linia zastąpiona przez
\n
):źródło
Japt, 52 bajty
?
Powinny być dosłowne bajt 0x95. Przetestuj online!Japt ma:
Nie mogę nawet użyć średnika w ciągu, ponieważ funkcja, w której jest zawinięty, chce zwrócić wszystko po średniku. Powinien to być tylko 46 bajtów:
Ale niestety tak nie jest. Zobaczę, czy uda mi się naprawić te błędy w ciągu następnych kilku godzin.
Jak to działa
źródło
X
mówiąc, musisz zwiększyć pierwszy .JavaScript,
112110 bajtów2 bajty wyłączone dzięki @ CᴏɴᴏʀO'Bʀɪᴇɴ .
Nie golfowany:
źródło
${i+1}
z${i++}
i zamienić${[...Array(i++)]
z${[...Array(i)]
.++i
Groovy, 97 bajtów
Wypróbuj online!
źródło
join','
), przestrzeń usunięcia po println i wymienić.collect{}
z*.with{}
Python 2, 96 bajtów
Dzięki @DenkerAffe za sugestię użycia
lambda
.Dzięki @MathiasEttinger za
join
pomysł.źródło
reduce(lambda x,y:'%s,_%s'%(x,y), r(i))
',_'.join(map(str,r(i)))
do usunięcia dodatkowych 14 bajtów (lub 15, ponieważ zostawiłeś dodatkowe miejscereduce
).C ++,
164159157 bajtów (155 tylko jako funkcja)To jest pełny program. Możesz zapisać 2 bajty tylko w formie funkcjonalnej, jeśli zastąpisz
int main()
jevoid f()
.Uruchom kod w Ideone
Niegolfowany, w tym ekspansja makr
źródło
j=1
w swojej pętli for, a więc nie maszif(j)
.for(int j=0;++j<=i;)
zaoszczędzić jeszcze jeden bajt.