Введите кратчайший код для печати следующей таблицы умножения:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
1×4=4 2×4=8 3×4=12 4×4=16
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
code-golf
kolmogorov-complexity
matrix89
источник
источник
for
петель? Где сложная (интересная) часть?for
. Хорошо, я используюwhile
.Ответы:
Excel,
9291 байтВ непосредственном окне редактора VBA выполните следующую команду:
Range("A1:I9").Formula="=IF(ROW()<COLUMN(),"""",COLUMN()&""×""&ROW()&""=""&COLUMN()*ROW())"
Выходные данные находятся непосредственно на активном рабочем листе.Я golfed дополнительных байт, меняя порядок ,
if
чтобы изменить>=
к<
. Я не обновлял скриншот, но он влияет только на формулу вверху, а не на вывод.источник
FOR
цикла.Python (75)
немного лучше, чем в двух других версиях Python.
источник
C ++,
10698 байтЯ использовал две петли и несколько трюков.
источник
#import <stdio.h> main(){for(int i=0,j;i++-9;j=0)while(j++-i)printf("%dx%d=%d%s",j,i,i*j,j<i?"\n":" ";}
на 3 байта короче.#import
и<cstdio>
?J:
5751 символовНет петель.
источник
([:;"2*\#"2(":@],'x',":@[,'=',":@*,' '"_)"0/~)>:i.9
APL (37)
И это даже не две петли. В APL следующая конструкция:
где
x
иy
списки, иF
является функцией, применяетсяF
к каждой паре элементов вx
иy
и дает вам матрицу.Итак:
∆∘.×∆←⍳9
получает таблицу умножения от 1 до 9. Вышеуказанная функция генерирует необходимую строку для каждой пары, то есть(⍕⍺)
строковое представление первого числа, за которым×
следует(⍕⍵)
строковое представление второго числа, затем следует=
, а затем следует⍕⍺×⍵
До тех пор, пока⍺≥⍵
.источник
Рубин:
6059 символовОбразец прогона:
источник
(1..9).map{
на1.upto(9){
!Perl, 54 персонажа
источник
АПЛ (Дьялог), 28
Аналог двойного цикла на других языках
{⍵{...}¨⍳⍵}¨⍳9
устанавливает двойной цикл⍕⍵,'×',⍺,'=',⍺×⍵
создает строку для каждой пары↑
Конвертировать массив из массива строк в матрицу строкВыход
источник
↑{⍵{⍕⍵'×'⍺'=',⍺×⍵}¨⍳⍵}¨⍳9
или даже использовать новый «ключевой оператор»:{⍕⍵'×'⍺'=',⍺×⍵}¨∘⍳⌸⍳9
Mathematica , 45
Довольно скучно, но я думаю, что это служит для сравнения синтаксиса:
источник
D, 75 символов
Вы только что сказали, что код не функционирует или полная программа
источник
foreach(i,1..10){foreach(j,1..i+1)writef("%dx%d=%d ",i,j,i*j);writeln;}
VBScript (133); без петель.
По запросу претендента: петель нет. Этот код использует рекурсивные вызовы подпрограмм.
источник
Клен, 64
источник
машинный код x86_64 (linux),
1759976 байтЭто дамп двоичного файла, и все это составляет 175 байтов. По сути, он выполняет те же два цикла, что и все ответы, но печать на консоль немного сложнее и, в основном, требует нажатия символов для печати в стек в обратном порядке, а затем создания (специфичного для Linux) системного вызова для фактического размещения этих символов. в стандартный вывод.Я теперь оптимизировал это так, чтобы только 1 операция записи выполнялась (быстрее!) И имела магические числа (вау!) И помещала весь результат в стек назад перед выполнением системного вызова. Я также вынул процедуру выхода, потому что кому нужен правильный код выхода?
Вот ссылка на мой первый и второй попытки в их оригинальном синтаксисе.
Я приветствую всех, кто имеет какие-либо другие предложения о том, как это можно улучшить. Я также могу объяснить логику более подробно, если кому-то интересно.
(Кроме того, он не печатает лишние пробелы, чтобы выровнять все столбцы, но если это необходимо, я могу добавить логику за счет еще нескольких байтов).РЕДАКТИРОВАТЬ: Теперь печатает дополнительные пробелы и еще больше! Он делает довольно сумасшедшие вещи с регистрами и, вероятно, нестабилен, если эту программу расширить.
источник
Javascript, 190 байт
Поздно к вечеринке, но я был задет комментарием @jdstankosky и решил пойти другим путем. Вот запись Javascript, которая искажает шаблон и пробует себя на этом пути.
Версия без игры в гольф (немного более старая версия, в которой функция возвращает таблицу вместо скрипта, предупреждающего об этом, но применяются те же принципы):
источник
Паскаль, 128 байт
Одна рекурсивная процедура заботится обо всем. Позвони с
m(9,9)
.Ungolfed:
источник
Фурье,
756632 байтаСпасибо @BetaDecay за 124 байта!
источник
VBA 55
(непосредственное окно)
примечание - GWBasic нужно только 2 дополнительных символа:
источник
Javascript, 75
Интересно, возможно ли что-то лучше, чем два (вместе?) Для петель ...
источник
Coreutils / Bash:
147136135Гольф, использование явного перевода строки и использование устаревшей опции головы (спасибо manatwork):
Выход:
источник
$(( ))
арифметические оценки на$[ ]
; разделить 2 символа, заменив$'\n'
экранированный символ новой строки буквальным (я имеюyes '
в виду, в одной строке, затем'
в следующей); сэкономить 2 символа, не используя явно опциюhead
's-n
, просто-
и число.$[ ]
нотации, приятно знать. Замена-n
на-
только один символ меньше, так что всего их 11, большое спасибо :).LOLCODE, 202 байта
Ungolfed:
Pythonated для не-динамиков:
источник
c #, 142 байта
И не для в поле зрения ...
источник
ForEach
"не в поле зрения" хорошо ... XD> <> , 50 байтов
Вы можете попробовать это на онлайн-переводчике .
Обратите внимание, что в каждой строке есть завершающие пробелы, что может сделать его неправильным (OP не указал на этот момент на этот ответ).
источник
/// , 268 байт
источник
ЯВА,
103 94 9290 байтИспользование JShell из Java 9 SDK позволяет мне сэкономить большое количество места
Следуя предложению Кевина, я уменьшил решение на 2 байта.
Благодаря Cliffroot, я смог уменьшить его еще на 1 байт
источник
int
второй цикл for и добавив,j
первый. Так вот так:for(int i=0,j;++i<=9;)for(j=1;j<=i;)System.out.print(i+"*"+j+"="+i*j+"\t"+(j++<i?"":"\n"));
++i<=9
наi++<9
C 79 байт
главный
Таблица
источник
Tcl 98 символов
источник
Javascript: 82 символа
источник
for(i=0,s="";9>i++;){for(j=0;j++<i;)s+=j+"x"+i+"="+j*i+" ";s+="\n"}alert(s)
, однако вещь с двумя пробелами на 2 цифры не соблюдается, я собирался представить тот, но+(9<i*j?" ":" ")
вместо простого+" "
редактирования: на троице исчезли двойные пробелы, но они на втором param4x4
не прямо под,5x4
как в задаче.Python: 87
Я смотрю на решения, которые выложили другие, и большинство из них, кажется, не получают правильный интервал.
источник
Python (79)
или ( 77 ), если я использую,
range(10)
за исключением того, что в начале выдает пустую строкуисточник
Perl:
65, 62 символаисточник
printf
круглые скобки; запасной 1 символ, перемещая назначение $ я в выражении диапазон:map{map{printf"%dx%d=%2d ",$_,$i,$_*$i}1..($i=$_);print$/}1..9
.