Напишите скрипт, который записывает в стандартный вывод или эквивалентный вашему языку 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
.
Это код-гольф , поэтому выигрывает самый короткий код в байтах!
public static void main(String[] args)
безусловно, дать функцию, если хотите.n
генератором -tuple, который я написал на Java: github.com/kenzierocks/Tuplocity . Он генерирует полностью общие кортежи!Ответы:
Джольф, 42 байта
Получу ли я бонусные баллы за избиение желе с лучшим результатом когда-либо? Содержит непечатные, поэтому вы можете попробовать это онлайн здесь . Я заменил непечатные надписи на соответствующие им индексы alt для удобства чтения.
объяснение
источник
vim
5654 нажатия клавишПоскольку V имеет обратную совместимость, вы можете попробовать это онлайн!
Это идеальное задание для vim! Я мог бы сыграть в гольф чуть позже. Также обратите внимание, что это
<c-a>
означает Control-A, и это считается одним нажатием клавиши.Объяснение:
источник
yy
наY
.class Tuple101
,class Tuple100
а не как вопрос.Желе, 44 байта
Мой первый желе ответ. Попробуйте онлайн!
источник
Pyth,
535048 байтовПопробуйте онлайн!
Простая итерация по диапазону (1100) и построение соответствующей строки из упакованной строки путем ее форматирования.
объяснение
Распакованная строка
class Tuple%i {public Object _%s;}
источник
s[
вместо всех этих+
.[
создает список произвольной длины иs
объединяет его. Кроме того, так как вы хотите[1, 2, ... 100]
, а не[0, 1, .. 99]
, используйтеVS100
, и вам тоже не понадобитсяh
.S
трюк! :) Уже сидел на избавлении от всего++++
, я знал, что есть лучший способ."
без необходимости.j<str><int>
нетU
?CoffeeScript,
8684 байтаПосмотреть решение онлайн
источник
for
ни послеin
).console.log"
? (Не знаю сценарий кофе, это общий трюк.x? y:z
он полностью отличается отx ? y:z
. Вы можете сказать,console.log?"hello"
но нетconsole.log"hello"
. Значительные пробелы. Иногда приятно, иногда странно.Java,
160, 125 байтСпасибо @DenkerAffe, @Denham Coote и @Mathias Ettinger за улучшения.
Ява пишет Java (потому что кто-то должен был!)
И версия без гольфа
источник
public static void main...
вещи.class Tuple1 {public Object _0,;} class Tuple2 {public Object _0,_1,;}
i++
из настройки цикла forString s = "_0"
так что вы можетеs += ",_" + i
и сохранить байт. Это также решит проблему с вялой комой. Вам нужно будет запустить цикл for с1
меньшим, чем,101
и вы сможете удалить лишние 4 байта, преобразовав только(i+1)
в ваше выходное сообщениеi
. Очевидно, вам нужно будет распечатать перед увеличениемs
.Oracle SQL 9.2,
138137 байт@Peter Спасибо за указание на ошибку 0/1.
Запрос использует CONNECT BY CLAUSE иерархического запроса для генерации 100 строк.
Псевдостолбец LEVEL содержит номер строки каждой строки.
SYS_CONNECT_BY_PATH объединяет первый параметр, номер строки каждой строки и использует второй параметр в качестве разделителя.
источник
Object _1
вместоObject _0
, так что потребуется еще два байта (-1
). Тем не менее,_
можно добавить к символуSYS_CONNECT_BY_PATH
вместо конкатенации, снова уменьшив его на два байта:REPLACE('class Tuple'||LEVEL||' {public Object'||SYS_CONNECT_BY_PATH(LEVEL-1,',_')||';}','t,_','t _')
Пакетная, 128 байтов
Изменить: Сохранено 10 байтов благодаря @Bob. Сохранено 1 байт благодаря @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.
источник
enabledelayedexpansion
на 117 байт: gist.github.com/Elusive138/4cea555114a979954dcb - если вы не возражаете против закрытия окна консоли, вы можете сохранить еще два, удалив/b
аргумент изexit
.@echo off
Сетчатка ,
80-79 байтЧисло байтов предполагает кодировку ISO 8859-1.
Попробуйте онлайн!
источник
Powershell - 65 байт
(Исправлено в ответ на комментарий)
Все заслуги перед TimmyD
источник
Perl 6, 65 bytes
источник
R -
199132123118 байтВерсия 4
Версия 3
Версия 2
Версия 1
источник
=
вместо присваивания<-
.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")}
Рубин, 71 байт
источник
[*0..i]*',_'
вауJava, 103 байта
Мой первый раз здесь. Всем привет! Я выбрал лямбда-выражение Java8 (анонимная функция).
Неуправляемая версия
Чтобы фактически использовать это, как обычно в Java8, вы должны присвоить его переменной (или привести к ней) соответствующего функционального интерфейса, а затем вызвать его метод; но технически функция - это только лямбда-выражение, поэтому я считаю только это.
Также требуется входной параметр, который экономит мне пару байтов, поскольку я могу использовать его как локальную переменную без указания ее типа. Я не уверен, что это считается мошенничеством, но мне кажется, что это в рамках правил: я только видел, как люди утверждают, что публикация функции разрешена, а не как , эта функция должна вызываться. :) И он на самом деле не читает параметр, поэтому функция все еще автономна; Вы можете передать ему любую строку или даже ноль, и он все равно будет выдавать правильный вывод.
А вот как это использовать:
источник
Python 2, 96
Python 3, 98
Использование:
Ungolfed:
формирователи:
103
108
источник
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
CJam, 53 байта
Попробуй это здесь .
источник
Groovy, 74 символа
"join ()" непобедим ... Новое решение благодаря @yariash
Старое решение, 78 символов:
источник
100.times{}
вместо(1..100).each{}
.Юлия, 77 байт
источник
Луа,
128106 байтЯ все еще пытаюсь найти способ напрямую работать с печатным значением, а не со строкой.
Редактировать: Частично нашел это! Мне все еще нужна строка для части "_0, _1 ...", но она уже лучше :).
Старое 128-байтовое решение
Ungolfed
источник
Python 3,
111109105 байтЭто не самая короткая вещь в мире, я просто участвую.
edit1: вниз 2 байта, удаляя
0,
в первую очередьrange
edit2: Я был излишне кастинг ,
int
чтобыstr
вместо того , чтобы просто используя%i
... вниз до 105.источник
range(i)
вместоrange(0,i)
или, так как вы использовалиrange
дважды, попробуйтеr=range
пораньше, а затем обращайтесь к каждому вызову простоr
(как в других решениях Python).range
начинается с 0 по умолчанию. Однако на 2 байта меньше, добавлениеr=range;
в начале приводит к тому же количеству символов, что я пробовал! : D',_'.join(map(str,range(i)))
здесь на 7 байт короче.Mathematica, 130 байт
источник
\n
можно заменить буквальным символом новой строки.Скала, 85 байт
источник
Ява, 116
(только для функции печати - согласно некоторым комментариям, это соответствует правилам)
источник
PHP, 112 байт
источник
<?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";
вы можете использовать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Серьезно, 55 байт
Hexdump (обратимый с
xxd -r
):Попробуйте онлайн!
Да, эта новая строка должна быть там.
Пояснение (новая строка заменена на
\n
):источник
Japt, 52 байта
?
Должен быть буквальным байт 0x95. Проверьте это онлайн!Джапт имеет:
Я даже не могу использовать точку с запятой в строке, потому что функция, в которую она помещена, хочет вернуть все после точки с запятой. Это должно быть только 46 байтов:
Но, увы, это не так. Я посмотрю, смогу ли я исправить эти ошибки в течение следующих нескольких часов.
Как это работает
источник
X
Кстати, вам нужно увеличить первое .Javascript,
112110 байт2 байта от спасибо @ CᴏɴᴏʀO'Bʀɪᴇɴ .
Ungolfed:
источник
${i+1}
с${i++}
и заменить${[...Array(i++)]
с${[...Array(i)]
.++i
Groovy, 97 байт
Попробуйте онлайн!
источник
join','
), убрать пробел после println и заменить.collect{}
на*.with{}
Python 2, 96 байт
Спасибо @DenkerAffe за предложение использования
lambda
.Спасибо @MathiasEttinger за
join
идею.источник
reduce(lambda x,y:'%s,_%s'%(x,y), r(i))
',_'.join(map(str,r(i)))
для удаления лишних 14 байтов (или 15, так как вы оставили дополнительное место в вашемreduce
).C ++,
164159157 байт (только 155 функций)Это полная программа. Вы можете сохранить 2 байта в форме только функции, если вы замените
int main()
наvoid f()
.Запустите код в Ideone
Ungolfed, включая расширение макроса
источник
j=1
в вашем цикле for, таким образом, не имеяif(j)
.for(int j=0;++j<=i;)
, сэкономит еще один байт.