Jako małe dziecko bardzo lubiłem bawić się tymi zabawkami:
Prawdopodobnie zamierzali je wykorzystać do sztuki, ale zawsze używałem ich do matematyki! Fraktale, wzory itp. Pewnego razu dostałem wyzwanie:
Zbuduj trójkąt bez użycia zielonych płytek trójkąta.
To wyzwanie zaskoczyło mnie najdłużej, dopóki nie natknąłem się na naprawdę piękny i prosty sposób na zrobienie tego za pomocą zaledwie 3 trapezoidów:
/\
/_/\
/__\_\
Teraz weź ten trójkąt i obróć go:
______
\ \__/
\/ /
\/
Za pomocą tych dwóch trójkątów możemy z nich zbudować większe trójkąty. Oto trójkąt o wysokości 2:
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
A oto trójkąty o wysokości 3-7:
#3
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
#4
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
#5
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
#6
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
#7
/\
/_/\
/__\_\
/\ \__/\
/_/\/ /_/\
/__\_\/__\_\
/\ \__/\ \__/\
/_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
/\ \__/\ \__/\ \__/\ \__/\ \__/\ \__/\
/_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\/ /_/\
/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\/__\_\
Wyzwanie
Napisz program lub funkcję, która przyjmuje liczbę n i wypisuje trójkąt o wysokości n bez trójkątów . Końcowe spacje w każdej linii są dopuszczalne, a do jednej końcowej lub wiodącej nowej linii jest również dopuszczalne. IO może mieć dowolny rozsądny format. Dane wejściowe mają być dodatnimi liczbami całkowitymi, więc nie musisz się martwić o liczby ujemne, dziesiętne, nieliczbowe itp.
Najkrótsza odpowiedź w bajtach wygrywa!
źródło
Odpowiedzi:
CJam, 47 lat
Wyjaśnienie:
Wypróbuj online
źródło
Ruby, 79
A. (-4 bajty
-1
+1
) zmieniono z 0-indeksowane (.times
) na 1-indeksowane (1.upto
)B. (-5 bajtów) zmieniono z tablicy trzech ciągów 6-znakowych na wybór podciągów 6-znakowych z ciągu 18-znakowego.
C. (-1 bajt)
m=n*3
->n*=3
D. (-5 bajtów) zredukował wszystkie pięć podwójnych odwrotnych ukośników do pojedynczych odwrotnych ukośników (częściowo możliwe dzięki zmianie kolejności ciągów wymaganych dla punktu A)
Ruby, 94
wyjaśnienie
Podstawową jednostką jest diament 3x6 w następujący sposób (ostatni znak w każdym rzędzie powielony dla przejrzystości :)
Wszystko, co musimy zrobić, to wyświetlić odpowiednie okno tego wzoru. Ruby's
ljust
pozwala pad na dowolny ciąg, nie tylko spacje. Zwykleljust
byłby używany do wypełniania ciągu znaków do wydrukowania przez dodanie spacji na końcu, ale tutaj używamy go w odwrotnej kolejności: do wypełniania ciągu spacji przez dodanie znaków do wydrukowania na końcu.nie wziął udziału w programie testowym
źródło
Siatkówka ,
150122118 bajtówNawiasem mówiąc, wyniki tego wyzwania wyglądają niesamowicie!
Dane wejściowe są jednostkowe. Dane wyjściowe zawierają końcowe podawanie wiersza. Kod wykorzystuje kodowanie ISO 8859-1. Zwróć uwagę na końcowe spacje na przedostatniej linii.
Wypróbuj online
Wyjaśnienie
Jeśli chcesz uzyskać bardziej szczegółowe wyjaśnienia, skomentuj lub napisz do mnie na czacie.
Dzięki Martin za grę w golfa o 32 bajty.
źródło
Ascii język drukowania Tarmo, 46 bajtów. (niekonkurujący)
Samo spojrzenie na takie dziwne języki programowania, jak CJam, wprawia mnie w zakłopotanie, jak skomplikowany, nienaturalny i tajemniczy może być język, że chciałem „odważnie iść tam, gdzie jeszcze nie było człowieka” i wymyślić mój własny język. W rezultacie stworzyłem własny język do drukowania wzorów ascii.
Podstawową ideą jest to, że możesz zdefiniować najpierw wzór, a następnie drukować - używając tego samego rodzaju znaku „1” lub „2” lub dowolnej liczby - możesz zdefiniować własny wzór wydruku.
Po zdefiniowaniu wzoru (zaczyna się od numeru do końca numeru) - kolejne numery wykonają drukowanie wzoru.
Na przykład
Wyjścia takie jak to:
Zdefiniuje wzór 1, a następnie wydrukuje go od razu. Wzór jest zdefiniowany wszystko oddzielone za pomocą „|” postać. 0 na końcu - działa jak zakończenie wzoru.
Znaki specjalne, takie jak „$”, są zarezerwowane jako przesunięcie wiersza, a „~” jest zarezerwowane dla odstępów - połowy - określonego wzorca.
Wysyła tekst w następujący sposób:
Dalej idzie do pętli. Ten musi być dobrze widoczny - więc zachowałem {} nawiasy kwadratowe dla pętli for, ale nazwy zmiennych są nazwane automatycznie - więc pierwszy nawias użyje „zmiennej”, drugiej „b” i tak dalej. Iteracja będzie zawsze wynosić od 0 do określonej liczby - a liczba ta jest definiowana przed nawiasami {}.
„n” jest zmienną zarezerwowaną dla danych wejściowych całej funkcji.
Więc kod:
Wyjdzie (przy n == 4):
A „#” to specjalny modyfikator do przycinania białego ołowiu.
I wreszcie całe rozwiązanie:
DrawPatterns.cs:
Z takimi argumentami wiersza poleceń: -d "1 / \ | / _ / \ | / ___ \ 2 __ | / 0n {na-1 {½} 1a {2 # 1} $}" 3
Wyprowadzi to:
źródło
JavaScript (ES6), 119 bajtów
Gdzie
\n
reprezentuje dosłowny znak nowej linii. Jeśli dopuszczalna jest linia wiodąca zen*3
spacjami i znakiem nowej linii,.slice(1)
można ją usunąć w celu zaoszczędzenia 9 bajtów.źródło
Python 2, 118 bajtów
Podobne podejście do Ruby odpowiedź poziom rzeki st za .
Wypróbuj online
źródło
Python 2, 142 bajty
Zasada jest bardzo podobna do innych odpowiedzi: weź trzy powtarzające się struny, a następnie warstwuj je w taki sposób, że wystarczy przyciąć niektóre z nich, aby uzyskać trójkąt, a następnie wypełnić je po lewej stronie.
źródło
C ++, 395 bajtów
Pierwszy kod golfowy o wspaniałym rozmiarze 395 bajtów w C ++. W moim przypadku wygląda to trochę jak konkurs na zaciemnienie: D
źródło
Pyth, 66 bajtów
Wypróbuj online!
źródło