Для двух положительных целых чисел, A и B, иллюстрируйте их наименьшее общее кратное число , выводя две строки тире ( -
) с длиной LCM (A, B) после замены каждой черты Ath в первой строке и каждой черты Bth во второй строке вертикальными чертами. ( |
).
Таким образом, конец каждой строки будет единственным местом в |
строке двух .
Например, если A = 6 и B = 4, LCM (6, 4) = 12, то есть:
two lines of 12 dashes: ------------ ------------ replace every 6th dash in the first line with a vertical bar: -----|-----| ------------ replace every 4th dash in the second line with a vertical bar: -----|-----| ---|---|---|
Таким образом, окончательный результат будет
-----|-----| ---|---|---|
Порядок ввода чисел должен соответствовать порядку строк.
Самый короткий код в байтах побеждает.
Testcases
A B
line for A
line for B
1 1
|
|
1 2
||
-|
2 1
-|
||
2 2
-|
-|
6 4
-----|-----|
---|---|---|
4 6
---|---|---|
-----|-----|
2 3
-|-|-|
--|--|
3 2
--|--|
-|-|-|
3 6
--|--|
-----|
2 5
-|-|-|-|-|
----|----|
4 3
---|---|---|
--|--|--|--|
10 10
---------|
---------|
10 5
---------|
----|----|
10 6
---------|---------|---------|
-----|-----|-----|-----|-----|
24 8
-----------------------|
-------|-------|-------|
7 8
------|------|------|------|------|------|------|------|
-------|-------|-------|-------|-------|-------|-------|
6 8
-----|-----|-----|-----|
-------|-------|-------|
13 11
------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|
----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|
Ответы:
Python 3, 80 байт
Благодаря Халварду Хаммелу удалось сохранить 1 байт, а Джонатан Аллан - 1 байт.
Проверьте это онлайн!
Проверьте это онлайн! (82 байта - первоначальный ответ)
Это лучшее, что я мог сделать в Python 2 (81 байт). Кажется, я не могу комментировать этот ответ, я просто опубликую это здесь:
Проверьте это онлайн!
Первая попытка здесь, вероятно, неоптимальная!
источник
Haskell , 57 байт
Попробуйте онлайн!
источник
0^0=1
трюк раньше - умныйЖеле , 12 байт
Попробуйте онлайн!
источник
MATL ,
1615 байтВвод - это вектор-столбец с двумя числами. Попробуйте онлайн!
В качестве бонуса вход может содержать более двух чисел . Попробуйте онлайн!
объяснение
источник
He
?[1; 1]
из-за того, что MATL (AB) обрабатывает форму массива с помощью индексации. (В качестве альтернативы, транспонирование может быть замененоHe
в конце, именно поэтому оно было изначально там)R ,
109105 байтПопробуйте онлайн!
Анонимная функция. Вычисляю
l=lcm(a,b)
, затем генерирует диапазон от0
доl
поa
, затем изl
к2*l
путиb
, устанавливая индексы к|
и печати в виде матрицы сl
колоннами.источник
Python 2 , 66 байт
Попробуйте онлайн!
источник
C 72 байта
источник
Шелуха , 12 байт
Попробуйте онлайн!
Да, в Husk есть встроенный lcm. Нет, мне это не нужно.
Бонус: работает с любым количеством вводимых значений
объяснение
источник
Mathematica, 63 байта
Попробуйте онлайн!
и еще одна версия, которую пользователь 202729 действительно очень хочет увидеть
Mathematica, 59 байт
этот использует специальный символ
\[Divides]
∣
источник
\[Divides]
вместоMod
оператора для представления делимости, что экономит 4 байта. Также Mathics TIO не следует печатать{Null, Null}
.05AB1E , 13 байтов
Использует кодировку 05AB1E . Попробуйте онлайн!
источник
.¿Lε²¹‚%_„-|è}øJ»
.APL (Dyalog) , 22 байта
Предполагает
⎕IO←0
. Принимает A, B в качестве правильного аргумента. Бонус: обрабатывает список ввода любой длины!Попробуйте онлайн!
{
...}
анонимная лямбда, где⍵
представляет правильный аргумент'|-'[
…]
Индексировать строку с помощью:∧/
LCM через вход⍳
первое, что много tentegers (от 0 до N-1)⍵∘.|
таблица остатков деления с вводом по вертикали и по горизонтали×
сигнум⌽
перевернуть горизонтальноисточник
⎕IO←0
, так как это используется по умолчанию.Октава ,
4638 байт-8 байт благодаря нескольким предложениям Луиса Мендо
Попробуйте онлайн!
источник
JavaScript (ES6), 69 байт
Рекурсивно выполняется до тех пор, пока
A
не делится наa
иb
- и не выводит тире или канал на основеa
делимости наA
.Затем функция вызывает себя, меняя местами
a
иb
.S
Переменный предотвращает функцию от называющей себя бесконечно.Тестовые случаи:
Показать фрагмент кода
Предыдущие ответы:
JavaScript (ES8), 91 байт
Использует алгоритмы:
Рекурсивно вызывает себя только один раз, чтобы вывести вторую строку.
Тестовые случаи:
Показать фрагмент кода
JavaScript (ES6), 93 байта
Тот же алгоритм, что и раньше, используя
repeat
вместоpadStart
.источник
padStart
была ES8?f=(a,b,A=1)=>(A%a?'-':'|')+(A%a|A%b?f(a,b,A+1):a<0?'':`\n`+f(-b,a))
Скала, 98 байт
Попробуйте онлайн
источник
*(a-1)
быть golfed к*~-a
и*(b-1)
к*~-b
? Кроме того, не могли бы вы добавить ссылку TIO с тестовым кодом? (О, и этот аватар не кажется мне очень*~-a
большим, но , к сожалению , Scala требует больше скобок:*(~(-a))
чтобы понять , что конкатенации*~-
,*~
,~-
не являются именами функций фантазии. Я добавил ссылку TIO.~-
могут быть имена функций в Scala. Я помню, как кто-то упоминал об этом раньше. Это неудачно в отношении игры в гольф. Снова добро пожаловать, и хороший первый ответ.Java (OpenJDK 8) , 103 байта
Попробуйте онлайн!
110 байтов, n входных значений
Попробуйте онлайн!
источник
Java 8,
125118117 байт-7 байт благодаря @Nevay .
-1 байт, начиная с завершающей новой строки (
A="",B="\n"
заменяется наA="\n",B=A
).Объяснение:
Попробуй это здесь.
источник
a->b->{String A="",B="\n",k="|";for(int i=0;!A.endsWith(k)|!B.endsWith(k);B+=i%b<1?k:"-")A+=++i%a<1?k:"-";return A+B;}
!A.endsWith(t)|!B.endsWith(t)
когда искал короткий способ проверить, заканчиваются ли оба с|
... И начинать B с новой строки вместо того, чтобы вставлять их между ними при возврате, тоже разумно.Python 2 ,
9688 байтРедактировать: 4 байта сохранены благодаря @ Leaky Nun
Редактировать: 4 байта сохранены благодаря @Rod
Попробуйте онлайн!
источник
[...]
с ,'\n'.join(...)
чтобы исправить.Python 2 , 89 байт
Не самая короткая запись Python 2, но другой подход, чем тот,
gcd
который все еще может быть пригоден для игры в гольф.Попробуйте онлайн!
источник
Haskell ,
6660 байтПопробуйте онлайн!
Одинаковая длина:
Старое решение:
источник
'\n':
.C (gcc) ,
12199939289 байтЭто должно быть намного короче, хмммм ....
Попробуйте онлайн!
источник
J , 20 байт
Попробуйте онлайн!
источник
SOGL V0.12 ,
1916 байтПопробуй здесь!
Объяснение:
источник
Stacked ,
4238 байтовПопробуйте онлайн!
Ввод в виде пары чисел. Все тестовые наборы вместе выглядят как здания.
объяснение
Это сначала берет
lcm
из двух входных чисел вz
. Затем для каждого числаk
мы генерируемz / k
строки-
длиныk - 1
, добавляя|
в конец каждого и выводя каждое.Предыдущие подсчитанные попытки
42 байта:
[:...lcm@z:[:z\/\#-'-'*\rep'|'+''#`out]"!]
Другие попытки
43 байта:
[:...lcm@z:[:z\/\#-'-'*\rep'|'#`'|'+out]"!]
45 байт:
['@lcm'!#~@z,[:z\/\#-'-'*\rep'|'#`'|'+out]"!]
45 байт:
[:...lcm@x[x'-'*\#<$betailmap'|'#`'|'+out]"!]
53 байта:
[:...lcm'-'*@z#-'.'*'('\+')'+'.'+[z\'$1|'repl out]"!]
54 байта:
[:...lcm@x{!x'-'*('('n#-'.'*').')''#`'$1|'repl out}"!]
источник
JavaScript (ES6), 89
Оценка LCM с повторными зависимостями.
Меньше гольфа
Контрольная работа
источник
VBA (Excel),
144142 байта-2 байта. спасибо сэр Вашингтон Гуэдес.
источник
Рубин ,
6457 байт-7 байт благодаря G B.
Попробуйте онлайн!
источник
Древесный уголь ,
323029 байтПопробуйте онлайн! Ссылка на подробную версию кода. Редактировать: 1 байт сохранен благодаря @ ASCII-only.
источник
Google Sheets, 77 байт
Формула анонимного листа, которая принимает входные данные из диапазона
A1:B1
и выводит их в вызывающую ячейку-4 байта благодаря @EngineerToast
источник
LCM(A1,B1)
толькоLCM(1:1)
для сохранения 4 байта. Я думаю, что разумно предположить пустой стартовый лист и указать, где находятся и входные данные, и формула.Excel VBA, 79 байт
Функция анонимного непосредственного окна VBE, которая берет входные данные из диапазона
[A1:B1]
и выводит визуализацию их LCM в непосредственное окно VBE.Это порт моего ответа в Google Sheets .
источник
Japt , 12 байт
Japt Переводчик
Входные данные в виде массива чисел. Выходы в виде массива строк. Флаг -R немного улучшает внешний вид вывода, но не является необходимым для логики.
Объяснение:
Большое спасибо Shaggy за то, что он нашел несколько байтов для сохранения.
источник