Ваша задача - вывести Волшебную Трапецию 8:
1 × 8 + 1 = 9
12 × 8 + 2 = 98
123 × 8 + 3 = 987
1234 × 8 + 4 = 9876
12345 × 8 + 5 = 98765
123456 × 8 + 6 = 987654
1234567 × 8 + 7 = 9876543
12345678 × 8 + 8 = 98765432
123456789 × 8 + 9 = 987654321
- Вывод на выбранном вами языке в наименьшем количестве байтов.
- Запишите количество пробелов в начале каждой строки, чтобы сохранить форму трапеции.
- Промежуточные пробелы разрешены.
- Вы можете использовать
×
или букву х - что вы предпочитаете.
code-golf
kolmogorov-complexity
rybo111
источник
источник
Ответы:
Python 2, 59 байт
Числа
a
иi
уравнениеa * 8 + i
генерируются арифметически. Каждая строкаi
увеличивается, иa
к ней добавляется следующая цифраa=a*10+i
. Например, еслиa=12345, i=5
, тогдаi
становится6
, значит, новоеa
есть то,12345*10 + 6
что есть123456
.Сохранение их в виде чисел, а не строк позволяет нам вычислить RHS, как указано в уравнении
a*8+i
, которое короче, чем обращение строк.источник
V , 37 байт
Попробуйте онлайн!
Это содержит непечатаемый, поэтому вот hexdump:
источник
05AB1E ,
32313028 байтКод:
Использует кодировку CP-1252 . Попробуйте онлайн! ,
источник
.c
здесь нельзя использовать?PHP,
105896057 байтмоя первая попытка игры в гольф здесь (спасибо manatwork & user55641)
59
89 (моя собственная попытка)
105 (первый)
источник
$t.=10-$i
на$s*8+$i
. tio.run/##K8go@G9jXwAk0/…$s*8+$i
вместо того, чтобы$t.=10-$i
сохранить еще два.Pyth, 32 байта
Попробуйте онлайн!
Спасибо @FryAmTheEggman за сохранение 2 байта. Спасибо @KennyLau за сохранение 3 байта.
источник
s
не соединяется с пробелом - он соединяется без разделителя.CJam,
393836 байтСпасибо оптимизатору за сохранение 2 байта.
Проверьте это здесь.
Тот же счетчик байтов:
Для этого требуется последняя версия, доступная на Попробуй онлайн!
источник
Python 2,
87847875 байтПопробуйте онлайн
Предыдущая версия использует магию строк.
Приведение
range(1,10)
к строке дает[1, 2, 3, 4, 5, 6, 7, 8, 9]
, и это хорошо, так как каждое число - только одна цифра. Таким образом, получить строку123456789
из этого просто с`range(1,10)`[1::3]
. Обратный диапазон есть`range(1,10)`[-2::-3]
. Затем, чтобы получить только то, что мне нужно для каждой итерации, я обрезаю ее либо в точке3*n
, либо в точке3*(9-n)
(27-3*n
) для обратных цифр.источник
for n in range(1,10):print"%9s"%s[:n]+" x 8 + %s = "%n+s[::-1][:n]
за 80 байтов.s="123456789";n=1;exec'print"%9s"%s[:n],"x 8 + %s ="%n,s[::-1][:n];n+=1;'*9
экономит еще три! До 75.Perl, 49 байт
использование
источник
Рубин,
77736560 байтПопробуйте онлайн ~
Основные обновления от @manatwork
Еще один капитальный ремонт от @xsot
источник
puts'%9d x 8 + %d = %d'%[k=[*1..i]*'',i,k.to_i*8+i]
.(1..9).map
→1.upto(9)
%9d
что такое опция форматирования для добавления целых чиселa=i=0;9.times{puts"%9d x 8 + %d = %d"%[a=a*10+i+=1,i,a*8+i]}
Java 10,
151133130129126110 байтПопробуйте онлайн.
Объяснение:
источник
x
вместо знака умножения.s
для"\n"
и удаления"\n"+
изfor
петли×
это 2 байта вместо 1 какx
...s
результат к каждой итерации?return o
вместоSystem.out.print(o)
? Также вы можете перейти на Java 10 и сохранить с помощьюvar
и лямбдыC 74 байта
источник
C #, 113 байт
Если у вас есть возможность улучшить это решение, не стесняйтесь поделиться.
источник
;n=10*n+ ++i
в цикле for можно изменить на;n=++i+10*n
. Также+" x "+"8 + "+
можно изменить на+" x 8 + "+
. сохранить еще 3 байта.Пакет, 117 байт
Да, это 16% знаков на одной строке; это партия для вас!
источник
Haskell, 92 байта
Как это работает:
источник
Сетчатка , 66 байт
Число байтов предполагает кодировку ISO 8859-1. Лидирующий перевод строки значителен.
Попробуйте онлайн!
источник
Пайк,
3029 байтПопробуй это здесь!
источник
PowerShell v2 +,
8564585752 байтаЦиклы от 8 до 0
8..0|%{...}
через оператора диапазона. На каждой итерации мы выводим конкатенацию строк, состоящую из (соответствующего числа пробелов" "*$_
), плюс-join
строку ed (диапазон от1
предварительно увеличенного вспомогательного числа++$i
, плюс средний бит" x 8 + $i = "
плюс окончательный диапазон от9
текущего номера$_
до -incremented).Здесь есть одна большая хитрость: мы используем «левое предпочтение» для приведения типов, что позволяет нам «добавлять» массивы вместе в
-join
скобках, то есть мы используем только один-join
оператор.пример
источник
%{
С твоими глазами все в порядке?MATL ,
383635 байтПопробуйте онлайн!
источник
J 51 байт
Создает строку,
123456789
а затем использует префиксы и суффиксы для создания выходных данных.использование
источник
JavaScript ES6 (88)
Используя в своих интересах новый
repeat
метод, кавычки и шаблонирование ...источник
alert
вместо негоconsole.log
, это может сэкономить несколько байтов!R
107103 байтUngolfed:
Результат:
источник
APL (Dyalog Unicode) ,
615239 байт SBCSПопробуйте онлайн!
-9 байт, используя
10⊥
трюк для разбора числа вместо уменьшения. Спасибо @ Adám за -13!Объяснение:
источник
JavaScript (ES6), 99 байт
Где
\n
представляет буквальный символ новой строки. Вторая версия выводит завершающий перевод строки. Я придумал формулу для чисел,('1'.repeat(9-i)+0+i)/9
но заполнение было легче сделать таким образом.источник
Brainfuck , 232 байта
Попробуйте онлайн!
Можно играть в гольф гораздо дальше ...
источник
Javascript (с использованием внешней библиотеки) (143 байта)
Ссылка на lib: https://github.com/mvegh1/Enumerable/
Объяснение кода: создайте диапазон от 1 до 9, и для каждого значения напишите строку, соответствующую сложному предикату. Предикату передается текущее целочисленное значение и создается диапазон, охватывающий элементы 10-currentValue, для создания такого количества пробелов. Эти пробелы объединяются с частью формулы в строке, а затем соединяются с таилендом диапазона, соответствующим количеству элементов в качестве внешнего интерфейса, в обратном порядке.
Примечание. В изображении первая строка отключена на один пробел, поскольку консоль добавила кавычку, поскольку возвращаемое значение является строкой. Фактическое значение отформатировано правильно
источник
05AB1E , 24 байта
Попробуйте онлайн!
Использует более новую версию, чем задача, которая теперь разрешена.
источник
©
и изменить ,®
чтобыy
сохранить байт.Холст , 20 байтов
Попробуй это здесь!
источник
VBA (Excel), 51 байт
Использование немедленного окна
источник
к (77 байт)
Возможно, может быть сокращено немного больше
Пример:
источник
golflua, 56 знаков
Образец прогона:
источник