Częstym wizualnym wyjaśnieniem twierdzenia Pitagorasa jest:
Kwadraty mają reprezentować kwadrat długości boku i obszary a + b = c
, tak jak mówi twierdzenie Pitagorasa.
Ta część jest tym, co musisz pokazać.
Twoje zadanie
- Otrzymasz dwie liczby całkowite jako dane wejściowe, które mają reprezentować boki
a
ib
trójkąta prostokątnego (np.3, 4
). - Będziesz wtedy zrobić kwadraty z długości
a
,b
orazc
z#
charakterem. Na przykład tutaj jest 3:
###
###
###
- Następnie sformatujesz je w równanie matematyczne, które wyjaśnia konkretną triplet Pitagorasa:
#####
#### #####
### #### #####
### #### #####
### + #### = #####
- Zauważ, że znaki
=
i+
mają spacje po obu stronach i jak wszystko jest na dole. - Nigdy nie dostanie wartości
a
ib
że makec
non-integralną. - To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach !
Przypadki testowe
(więcej pojawi się, gdy będę miał czas, naprawdę trudno je wykonać ręcznie)
3, 4
#####
#### #####
### #### #####
### #### #####
### + #### = #####
6, 8
##########
##########
######## ##########
######## ##########
###### ######## ##########
###### ######## ##########
###### ######## ##########
###### ######## ##########
###### ######## ##########
###### + ######## = ##########
4, 3
#####
#### #####
#### ### #####
#### ### #####
#### + ### = #####
5, 12
#############
############ #############
############ #############
############ #############
############ #############
############ #############
############ #############
############ #############
##### ############ #############
##### ############ #############
##### ############ #############
##### ############ #############
##### + ############ = #############
a+b=c
a
,b
ic
są określane jako obszary kwadratów, a przykłady są nieprawidłowe.Odpowiedzi:
Pyth,
35323130 bajtówWypróbuj online.
źródło
.i
dodając puste wiersze:j_.ts.i.imm*d\#d+Qs.aQ"+="mk4d
CJam, 49 bajtów
Wypróbuj online w interpretatorze CJam .
Jak to działa
źródło
Python 2,
134100 bajtówWypróbuj online.
Program pobiera dane jako liczby całkowite oddzielone przecinkami, oblicza przeciwprostokątną za pomocą wbudowanych liczb zespolonych Pythona, a następnie zapętla się od tej wartości, obliczając i wypisując każdą linię w miarę upływu czasu. Główną sztuczką golfową jest indeksowanie łańcuchów zamiast instrukcji warunkowych, aby wybrać
#
/+
/=
vs spacji.Edycja: Pierwsza wersja była ofiarą poważnej nadmiernej inżynierii - ta jest zarówno prostsza, jak i znacznie krótsza.
źródło
"# "[i>a]*a
zamiast robienia tego dla każdej zmiennej.Julia,
121114112 bajtówNie golfowany:
Naprawiono problem i zapisano 2 bajty dzięki Glen O.
źródło
JavaScript ES6,
155134140129 bajtówPrzepisałem to z
for
. Wciąż dużo golfa ...Jeśli coś nie działa, daj mi znać. Naprawię to rano.
Testowane na Safari Nightly
Nie golfowany:
Wyjaśnienie:
(Nie zaktualizowano), ale wciąż wystarczająco dokładne.
PRÓBNY
Wersja ES5 Dane wejściowe muszą być poprawnymi zestawami liczb :
źródło
a
ab
to powoduje, żec
nie są całkami”.(z<b?'#':' ')
->' #'[z<b|0]
Pyth,
5149 bajtówOczekuje danych wejściowych w formularzu
[3,4]
.Wypróbuj tutaj
AQ
- przypisuje dane wejściowe doG, H
Js.a,GH
- oblicza przeciwprostokątną jakoJ
Lj*b]*b\#;
- definiujey(b)
jako tworzenie kwadratu wielkościb
(w innym miejscu kodu,b
oznacza )j_MCm_.[d\ Jcj[yJb\=byHb\+byG))b
- Tworzy kwadraty, podkładki ze spacjami i transponujeZaoszczędź dwa bajty dzięki Maltysen.
źródło
.i
nterlace zamiast wszystkich tych list.J
jest w lambda, które jest oceniane poJ
pierwszym użyciu.*]
można zastąpićm
Ruby, 134
proste podejście linia po linii.
Poniżej w programie testowym, z symbolem zmienionym na @, aby uniknąć konfliktu ze składnią
#{....}
(„interpolacja łańcucha”) używaną do wstawiania wyrażeń w łańcuch. Każde wejście należy podać w innym wierszu.źródło
a*a+b*b
należy wyciąć dwa bajty z obliczeńc
.C, 176 bajtów
C nie wygra, ale zabawa jest tego warta.
Dość drukowane:
gcc pozwala nam przekazać trzeci parametr do main (tablica zmiennych środowiskowych), więc wykorzystujemy go, aby użyć go do naszych celów.
The
byłoby równoważne z
ponieważ
scanf
zwraca liczbę pomyślnie przeskanowanych parametrów.źródło
PHP,
178170168 bajtówDane wejściowe to parametry GET
x
iy
. Niestety nie mogę grać w golfa w te powtarzające się struny.$i>0
słowem$i
Nie jestem pewien, dlaczego PHP nie lubi,
@echo
więc musiałem poświęcić 1 bajt@print
.W przypadku, gdy SE zepsuje kodowanie, jest to przeznaczone do zakodowania w Windows-1252 (nie UTF8).
źródło
echo
vsprint
. patrz: stackoverflow.com/questions/7094118/…APL (Dyalog Extended) ,
3329 bajtów SBCS-3 z powodu moich rozszerzeń Dyalog APL.
Anonimowy przedrostek lambda:
Wypróbuj online!
{
…}
„Dfn”;⍵
jest argumentem (długości boczne)⍵*2
plac+/
suma√
pierwiastek kwadratowy⍵,
poprzedzać argument{
…}¨
Zastosuj dla każdego następującą anonimową lambdę#
główna przestrzeń nazw⍕
sformatuj jako tekst⍵ ⍵⍴
użyj argumentu dwa razy, aby r eshape w matrycy o tych wymiarach.⍪
zrobić w kolumnie' ++=',
wstaw te trzy znaki do trzech wierszy,
ravel (łącz wiersze w listę)⍕
sformatuj jako tekst⊖
odwróć do góry nogamiźródło
CJam, 78 bajtów
Najpierw oblicza przeciwprostokątną (H), a następnie dla każdej strony (S) buduje tablicę S linii składających się z:
H-S
spacji +S
myślników. Wreszcie transponuje macierz.Próbny
źródło
Lua5.2,
257241227222 bajtyio
funkcji inspirowane inną odpowiedziąźródło
Węgiel drzewny , 24 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Pobiera dane wejściowe jako tablicę dwóch elementów. Wyjaśnienie:
Dołącz przeciwprostokątną do wejść.
Pętla nad znakami wyświetlanymi po prawej stronie każdego kwadratu w odwrotnej kolejności.
Wydrukuj tę postać w lewo z odstępami.
Usuń ostatnią liczbę z tablicy i wydrukuj kwadrat
#
s tego rozmiaru.źródło
PowerShell ,
139137135 bajtów-2 dzięki tylko ASCII
-2 dzięki Mazzy
Wypróbuj online!
Obliczanie $ c boli i prawdopodobnie jest lepszy sposób na warunkową zamianę między
#
a. Tworzy listę fragmentów i łączy je razem, warunkowo dodając znaki.
źródło
$m=(" ","#")
: Wypróbuj online!Japt, 28 bajtów
Pobiera dane wejściowe jako tablicę liczb całkowitych.
Spróbuj
źródło
05AB1E , 38 bajtów
Pobiera dane wejściowe jako listę dwóch liczb (tj
[3,4]
.).Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
DnOt©)˜ε'#×y.Dðy×®y-.D)R}ø»
była moja próba, dopóki nie zauważyłem+
i=
.+
i=
rzeczywiście są odpowiedzialne za większą część kodu. Btw, możesz grać w golfa 2 bajty w swoim podejściu, zastępującDnOt©)˜
jenOt©ª
, tak jak ja w mojej obecnej odpowiedzi. :) Lubię jednak twoje użycie.D
.Perl 6 , 99 bajtów
Wypróbuj online!
Anonimowy blok kodu, który przyjmuje dwie liczby i zwraca pełny ciąg z wiodącą nową linią i trzema wiodącymi spacjami oraz jedną końcową w każdej linii.
Jeśli zamiast tego możemy użyć innych znaków
#
, mogę zapisać bajt, zastępując'#'
go\*
.źródło
C # (.NET Core) ,
221, 194 bajtyTo wydaje się zbyt długie. Ta wersja po prostu zapętla się, aby utworzyć ciąg.
EDYCJA: Ascii-Tylko z ładnym-27-bajtowym golfem przy użyciu konstruktora ciągów do szeregowego dodawania znaków! Również za wskazanie, że korzystałem z Math.Sqrt, a nie System.Math.Sqrt. To zostało dostosowane!
Wypróbuj online!
źródło
System.Math
nie,Math
jeśli nie używasz interaktywnego