Biorąc pod uwagę literę alfabetu angielskiego, Twoim zadaniem jest zbudowanie pół-przekątnego alfabetu na wejściu.
Jak zbudować alfabet pół-przekątny?
Krótki opis : Najpierw zajmujesz pozycję litery w alfabecie P
(tutaj P
jest indeksowana 1). Następnie drukujesz każdą literę, aż do wejścia (włącznie) w wierszu, poprzedzonego P-1
i powtarzającego P
razy tę literę , z przeplotem.
Przykłady :
Biorąc pod uwagę
F
, twój program powinien wypisać:ZA nocleg ze śniadaniem CCC DDDD EEEEE FFFFFF
Biorąc pod uwagę
K
, twój program powinien wypisać:ZA nocleg ze śniadaniem CCC DDDD EEEEE FFFFFF GGGGGGG HHHHHHHH IIIIIIIII JJJJJJJJJJ KKKKKKKKKKK
Biorąc pod uwagę
A
, twój program powinien wypisać:A
Zasady
Możesz wybrać małe lub wielkie litery, ale to powinno być spójne.
Możesz mieć dodatkowe przestrzenie w następujący sposób:
- Jedna spójna spacja wiodąca (w każdej linii).
- Końcowe lub wiodące znaki nowej linii.
- Końcowe spacje.
Dane wejściowe i wyjściowe można przyjmować dowolną standardową wartością i obowiązują domyślne luki.
Zamiast tego możesz wypisać listę wierszy, o ile podasz również wersję ascii-art .
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach!
Zainspirowany tym wyzwaniem .
Odpowiedzi:
Python 3 , 59 bajtów
Wypróbuj online!
Python 3 , 61 bajtów
Wypróbuj online! (link do wersji z ładnym drukiem)
źródło
Python 2 ,
636159 bajtów-2 bajty dzięki Rod. -2 bajty dzięki Felipe Nardi Batista.
Wypróbuj online!
źródło
C, 89 bajtów
Wypróbuj online!
źródło
PowerShell ,
4542 bajtówWypróbuj online!
Pobiera dane wejściowe jako literalny znak, a następnie zapętla przez wielkie litery do tego miejsca, każda iteracja poprzedza odpowiednią liczbę spacji, a następnie hybryda char \ space.
Zaoszczędź 3 bajty dzięki TessellatingHeckler.
źródło
"$args"
tak bardzo, że tutaj by to nie zadziałało, zapomniałem o[0]
metodzie. Ha ha.JavaScript (ES6), 85 bajtów
Działa małymi literami zarówno dla wejścia jak i wyjścia. Generuje spację wiodącą i spację końcową w każdej linii.
Próbny
Pokaż fragment kodu
źródło
`${s} `
można zastąpić(s+"")
jednym zapisaniem bajtu(s+" ")
, ale to równie długo.APL (Dyalog) , 26 bajtów
Monituje o charakter skalarny. Wyświetla listę linii.
Wypróbuj online! (ma wersję ASCII w jednym bajcie)
⎕
monit o wprowadzenie⎕A⍳
znajdź d ndex w A lphabet⍳
Pierwszy, że wiele ɩ ntegers(
…)¨
Zastosuj następującą funkcję ukrytą dla każdego:⊃∘⎕A
wybierz literę argumentu z litery A alfabetu⊢⍴
cyklicznie przekształcaj go do długości argumentu' ',¨⍨
dodaj spację do każdego⍴∘'',
dodaj ciąg długości argumentu (wypełniony spacjami)∊
ε nlist (spłaszczyć)Wersja artystyczna ASCII ma
↑
po lewej stronie; mieszaj listę ciągów w tabeli znaków.źródło
Perl 5 , 31 bajtów
Kod 30 bajtów + 1 dla
-l
.Wypróbuj online!
źródło
say
zamiast-l
flagi: Wypróbuj online!-E
/-M5.01
, używałemsay
znacznie w przeszłości i prawdopodobnie nadużyłbym faktu, żesay
jest to alternatywa dlaprint
ograniczonego źródła lub podobnego wyzwania, ale ze względu na -3 zachowam jak na razie. Zobacz ten meta post jako uczciwy argument . Doceń wejście!Dyalog APL, 38 bajtów
Wypróbuj online!
W jaki sposób?
⎕A↑⍨
- weź alfabet do⎕A⍳⍵
- znak wejściowy¨
- dla każdego znaku⍵,' '
- weź char i przestrzeń(...)⍴
- przekształć do2×y←⎕A⍳⍵
- dwukrotność indeksu znaku w alfabecie(y/' ')
- i poprzedzają spacje indeksem char↑
- następnie spłaszczyćźródło
APL (Dyalog Classic) , 26 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
{}
, wymienić⍵
się⎕
i twierdzą, że to „kompletny program” zamiast funkcją. To sprawi, że twoje rozwiązanie będzie najlepsze (jak dotąd).V ,
28, 26, 25, 23 bajtów ( konkurencyjne )Wypróbuj online!
Zauważ, że chociaż od dawna planowałem dodać pewne funkcje , to wyzwanie przekonało mnie, że w końcu to zrobiłem.
Dane wyjściowe zawierają jedną spację wiodącą w każdej linii i jedną nową linię.
Hexdump:
Wyjaśnienie:
źródło
05AB1E , 10 bajtów
Wypróbuj online!
-2 dzięki Adnan .
Dołącz,
»
aby drukować w osobnych wierszach.źródło
<
ponieważ jedna spójna wiodąca przestrzeń jest w porządku.A¹¡н«ðâƶāú
powinien działać przez 10 bajtów¹¡
to sprawi, że to nie zadziała ... och, więc dlatego jest«
tam. : pR,
9488 bajtów-6 bajtów dzięki Giuseppe
Nie golfowany:
źródło
f
jest to jednowierszowy, i używaniematch
zamiastwhich
zapisywania bajtu.Haskell,
5244 bajtyZwraca listę wierszy.
Wypróbuj online!
Edycja: @jferard: zapisano trzy bajty. Dzięki!
źródło
f k=[tail$[" ",s:" "]>>=(['A'..s]>>)|s<-['A'..k]]
tail$
.JavaScript (ES8), 92 bajty
Używa małych liter. Linie mają jedno miejsce wiodące i jedno końcowe. Zwraca tablicę wierszy.
Test Snippet
źródło
Łuska , 13 bajtów
Bierze znak w pojedynczym cudzysłowie jako argument wiersza poleceń, wypisuje wynik do STDOUT. Wypróbuj online!
Wyjaśnienie
Wykorzystuję sposób, w jaki Husk drukuje listy list ciągów: łącz wewnętrzne listy ze spacjami i zewnętrzne listy z nowymi liniami.
źródło
05AB1E ,
151413 bajtówZaoszczędzono 1 bajt dzięki Adnanowi
Wypróbuj online! lub artystyczna wersja Ascii
Wyjaśnienie
źródło
A¹¡н«
zamiastADIk>£
powinien działaćA¹¡н
ale nie zastanawiałem«
się nad ostatnim listem, więc nie było wystarczająco dobre: PAPL (Dyalog Unicode) , 22 bajty SBCS
Wypróbuj online!
Zastosowania
⎕io←1
. Drukuje spację wiodącą, co jest dozwolone.źródło
QBasic,
797472 bajtyDzięki Taylor Scott za oszczędności bajtów (dwa razy!)
Używa wielkich liter. Wprowadzanie odbywa się poprzez naciśnięcie klawisza i nie jest powtarzane na ekranie.
Wyjaśnienie
Zapętlamy
i
od1
pozycji ograniczającej litery w alfabecie (na podstawie 1). Do każdego z nichi
przechodzimy do kolumnyi
ekranu za pomocąTAB
; Następnie,i
czasy, możemy wydrukowaći
th literę alfabetu, a następnie za pomocą przestrzeni.źródło
INPUT$(1)
polecenia jako bezpośredniego zamiennika zmiennejz$
dla delty -2 bajtówJapt
-R
,24231715 bajtówGeneruje tablicę, zawiera wiodącą nową linię oraz wiodącą i końcową spację w każdej linii.
Sprawdź to
źródło
Węgiel drzewny , 18 bajtów
Wypróbuj online!
źródło
E…·?θ⁺× κ⪫× κι
razie wykona zadanie w 14 bajtach.?
się tam dostał.A
Myślę, że tak powinno być . Och, czekaj, och, rozumiem o co ci chodzi.Braingolf , 65 bajtów
Wypróbuj online!
Małe litery.
Zawiera 1 końcowe miejsce w każdym wierszu i końcowy znak nowej linii na końcu wyniku.
źródło
C # (.NET Core) , 103 bajty
Wypróbuj online!
źródło
JavaScript,
10294 bajty2 bajty zapisane dzięki Neilowi
źródło
Siatkówka , 51 bajtów
Wypróbuj online! Wyjaśnienie:
Zduplikuj (pierwszą) literę.
Obróć go z powrotem o 1 w alfabecie lub usuń, jeśli jest duplikatem
A
. Powtarzaj i obracaj, dopóki nie powielimy.A
W tym momencie usunięcie cofnie duplikację i pętla się zakończy.Zastąp każdą literę linią z literą wyłożoną po obu stronach.
Wstaw zduplikowane litery między wszystkimi parami dopełniania po prawej stronie istniejących liter.
źródło
Haskell , 57 bajtów
Wypróbuj online!
źródło
Węgiel drzewny , 15 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Gdyby dodatkowe dopełnienie było legalne, działałoby to dla 14 bajtów:
Wypróbuj online! Link jest do pełnej wersji kodu.
źródło
Mathematica, 70 bajtów
małe litery
wypisuje listę
thanx @ngenisis dla poprawek
Dla wersji ascii-art umieść
Column@
na początkuźródło
Excel VBA, 72 bajty
Anonimowa funkcja bezpośredniego okna VBE, która przenosi dane wejściowe z komórki
A1
i dane wyjściowe do bezpośredniego okna VBEźródło
Pyth , 17 bajtów
Wypróbuj tutaj (ładna wersja do wydruku).
Jak to działa?
hxG
- Pobiera indeks danych wejściowych zapisanych małymi literami.<G
- Przycina każdy znak po wprowadzeniu z alfabetu..e
- Wyliczona mapa. Mapy nad przyciętym alfabetem z indeksami ask
i literami asb
.*kd
- Dołączk
spacje.+bd
-b
+ spacja (bieżąca litera + spacja).*...hk
- Powtórzk+1
czasy.+(...)(...)
- konkatenat.źródło
.e+*kdjd*bhk<GhxG
również 17 bajtów.e+*kd*+bdhkhcGQ
C ++ (gcc) , 164 bajty
Moja pierwsza próba po długim przyczajeniu się!
Kod niepoddany golfowi poniżej:
Wypróbuj online!
źródło