Biorąc pod uwagę dwie dodatnie liczby całkowite, A i B, ilustrują ich najmniejszą wielokrotność , wyprowadzając dwie linie myślników ( -
) o długości LCM (A, B) po zastąpieniu każdego myślnika Ath w pierwszej linii i każdego myślnika Bth w drugiej linii pionowymi kreskami ( |
).
W ten sposób koniec każdej linii będzie jedynym miejscem, w którym linia będzie znajdować się dwa |
.
Na przykład, jeśli A = 6 i B = 4, LCM (6, 4) = 12, więc:
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: -----|-----| ---|---|---|
Zatem końcowy wynik byłby
-----|-----| ---|---|---|
Kolejność liczb wejściowych powinna odpowiadać kolejności wierszy.
Najkrótszy kod w bajtach wygrywa.
Przypadki testowe
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
------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|
----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|
Odpowiedzi:
Python 3, 80 bajtów
Zaoszczędzono 1 bajt dzięki Halvardowi Hummelowi i 1 bajt dzięki Jonathanowi Allanowi.
Przetestuj online!
Przetestuj online! (82 bajty - wstępna odpowiedź)
To najlepsze, co mogłem zrobić w Pythonie 2 (81 bajtów). Wygląda na to, że nie mogę skomentować tej odpowiedzi, po prostu opublikuję to tutaj:
Przetestuj online!
Pierwsza próba tutaj, prawdopodobnie nieoptymalna!
źródło
Haskell , 57 bajtów
Wypróbuj online!
źródło
0^0=1
sztuczki - sprytneGalaretka , 12 bajtów
Wypróbuj online!
źródło
MATL ,
1615 bajtówDane wejściowe to wektor kolumnowy z dwiema liczbami. Wypróbuj online!
Jako bonus, dane wejściowe mogą zawierać więcej niż dwie liczby . Wypróbuj online!
Wyjaśnienie
źródło
He
?[1; 1]
, ponieważ MATL (AB) obsługuje kształt tablicy z indeksowaniem. (Alternatywnie transpozycja może zostać zastąpionaHe
na końcu, dlatego początkowo tam była)R ,
109105 bajtówWypróbuj online!
Funkcja anonimowa. Oblicza
l=lcm(a,b)
, a następnie generuje zakres od0
dol
przeza
, a następnie odl
do2*l
dob
, ustawiając wskaźniki na|
i drukując jako macierz zl
kolumnami.źródło
Python 2 , 66 bajtów
Wypróbuj online!
źródło
C, 72 bajty
źródło
Łuska , 12 bajtów
Wypróbuj online!
Tak, w Husk jest wbudowany lcm. Nie potrzebuję tego.
Bonus: działa z dowolną liczbą wartości wejściowych
Wyjaśnienie
źródło
Mathematica, 63 bajty
Wypróbuj online!
oraz kolejna wersja, którą użytkownik naprawdę chce naprawdę opublikować
Mathematica, 59 bajtów
ten używa znaku specjalnego
\[Divides]
∣
źródło
\[Divides]
zamiastMod
operatora do reprezentowania podzielności, co oszczędza 4 bajty. Również matematyka TIO nie powinna drukować{Null, Null}
.05AB1E , 13 bajtów
Wykorzystuje kodowanie 05AB1E . Wypróbuj online!
źródło
.¿Lε²¹‚%_„-|è}øJ»
.APL (Dyalog) , 22 bajty
Zakłada
⎕IO←0
. Uważa A, B za właściwy argument. Bonus: obsługuje listę wprowadzania dowolnej długości!Wypróbuj online!
{
…}
Anonimowa lambda gdzie⍵
reprezentuje właściwy argument'|-'[
…]
Indeksuj ciąg za pomocą:∧/
LCM na wejściu⍳
najpierw tyle ɩ ntegerów (od 0 do N-1)⍵∘.|
podział pozostałej tabeli z danymi wejściowymi w pionie i poziomo×
signum⌽
Obróć poziomoźródło
⎕IO←0
, ponieważ jest to ustawienie domyślne.Oktawa ,
4638 bajtów-8 bajtów dzięki kilku sugestiom Luisa Mendo
Wypróbuj online!
źródło
JavaScript (ES6), 69 bajtów
Rekurencyjnie działa, dopóki nie
A
jest podzielna przez jednoa
i drugieb
- generowanie myślnika lub potoku na podstawiea
podzielności przezA
.Następnie funkcja wywołuje się, zamieniając
a
ib
.S
Zmienna zapobiega funkcji z wywołaniem się w nieskończoność.Przypadki testowe:
Pokaż fragment kodu
Poprzednie odpowiedzi:
JavaScript (ES8), 91 bajtów
Wykorzystuje algorytmy:
Rekurencyjnie wywołuje się tylko raz, aby wyświetlić drugą linię.
Przypadki testowe:
Pokaż fragment kodu
JavaScript (ES6), 93 bajty
Ten sam algorytm jak poprzednio, używając
repeat
zamiastpadStart
.źródło
padStart
to ES8?f=(a,b,A=1)=>(A%a?'-':'|')+(A%a|A%b?f(a,b,A+1):a<0?'':`\n`+f(-b,a))
Scala, 98 bajtów
Wypróbuj online
źródło
*(a-1)
grać w golfa do*~-a
i*(b-1)
do*~-b
? A może mógłbyś dodać link TIO z kodem testowym? (Och, a ten awatar nie wydaje mi się zbyt sześcienny.; P)*~-a
jest super, ale niestety wymaga więcej Scala wsporniki:*(~(-a))
aby wyjaśnić, że powiązań,*~-
,*~
,~-
nie są fantazyjne nazwy funkcji. Dodałem link TIO.~-
mogą być nazwami funkcji w Scali. Pamiętam, że ktoś wspomniał o tym już dawno temu. To niefortunne w odniesieniu do gry w golfa. Znowu witamy i miła pierwsza odpowiedź.Java (OpenJDK 8) , 103 bajty
Wypróbuj online!
110 bajtów, n wartości wejściowych
Wypróbuj online!
źródło
Java 8,
125118117 bajtów-7 bajtów dzięki @Nevay .
-1 bajt, zaczynając od końcowego nowego wiersza (
A="",B="\n"
zastąpiony przezA="\n",B=A
).Wyjaśnienie:
Wypróbuj tutaj.
źródło
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)
gdy szukałem krótkiego sposobu, aby sprawdzić, czy oba kończą się na|
.. A rozpoczęcie B z nową linią zamiast umieszczania jej między nimi na powrocie jest również sprytne.Python 2 ,
9688 bajtówEdycja: Zapisano 4 bajty dzięki @Leaky Nun
Edycja: Zapisano 4 bajty dzięki @Rod
Wypróbuj online!
źródło
[...]
z'\n'.join(...)
naprawić.Python 2 , 89 bajtów
Nie jest to najkrótsza pozycja w Pythonie 2, ale inne podejście niż to,
gcd
które może być jeszcze grywalne.Wypróbuj online!
źródło
Haskell ,
6660 bajtówWypróbuj online!
Ta sama długość:
Stare rozwiązanie:
źródło
'\n':
.C (gcc) ,
12199939289 bajtówTo powinno być znacznie krótsze, hmmmm ....
Wypróbuj online!
źródło
J , 20 bajtów
Wypróbuj online!
źródło
SOGL V0.12 ,
1916 bajtówWypróbuj tutaj!
Wyjaśnienie:
źródło
Skumulowane ,
4238 bajtówWypróbuj online!
Wprowadź w postaci pary liczb. Wszystkie połączone przypadki testowe wyglądają trochę jak budynki.
Wyjaśnienie
Najpierw pobiera się
lcm
z dwóch liczb wejściowychz
. Następnie dla każdej liczbyk
generujemyz / k
ciągi-
długościk - 1
, dodając|
do końca każdego i wyprowadzając każdy.Poprzednie policzone próby
42 bajty:
[:...lcm@z:[:z\/\#-'-'*\rep'|'+''#`out]"!]
Inne próby
43 bajty:
[:...lcm@z:[:z\/\#-'-'*\rep'|'#`'|'+out]"!]
45 bajtów:
['@lcm'!#~@z,[:z\/\#-'-'*\rep'|'#`'|'+out]"!]
45 bajtów:
[:...lcm@x[x'-'*\#<$betailmap'|'#`'|'+out]"!]
53 bajty:
[:...lcm'-'*@z#-'.'*'('\+')'+'.'+[z\'$1|'repl out]"!]
54 bajty:
[:...lcm@x{!x'-'*('('n#-'.'*').')''#`'$1|'repl out}"!]
źródło
JavaScript (ES6), 89
Ocena LCM z powtarzającymi się uzależnieniami.
Mniej golfa
Test
źródło
VBA (Excel),
144142 bajty-2 bajty. dziękuję Sir Washington Guedes.
źródło
Rubin ,
6457 bajtów-7 bajtów dzięki G B.
Wypróbuj online!
źródło
Węgiel drzewny ,
323029 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Edycja: Zapisano 1 bajt dzięki tylko @ ASCII.
źródło
Arkusze Google, 77 bajtów
Anonimowa formuła arkusza roboczego, która pobiera dane wejściowe z zakresu
A1:B1
i dane wyjściowe do komórki wywołującej-4 Bajty dzięki @EngineerToast
źródło
LCM(A1,B1)
tylkoLCM(1:1)
do zapisania 4 bajtów. Myślę, że uzasadnione jest założenie pustego arkusza początkowego i określenie, gdzie znajdują się zarówno dane wejściowe, jak i formuła.Excel VBA, 79 bajtów
Anonimowa funkcja bezpośredniego okna VBE, która pobiera dane wejściowe z zakresu
[A1:B1]
i wysyła wizualizację LCM do bezpośredniego okna VBE.To jest port odpowiedzi na moje Arkusze Google .
źródło
Japt , 12 bajtów
Japt Interpreter
Dane wejściowe jako tablica liczb. Dane wyjściowe jako tablica ciągów. Flaga -R nieznacznie poprawia wygląd danych wyjściowych, ale nie jest konieczna dla logiki.
Wyjaśnienie:
Dodatkowe podziękowania dla Shaggy za znalezienie bajtów do zapisania.
źródło