Masz wydrukować dokładnie ten tekst:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGFEDCBA
ABCDEFEDCBA
ABCDEDCBA
ABCDCBA
ABCBA
ABA
A
Okular
- Dodatkowe końcowe znaki nowej linii są dozwolone na końcu danych wyjściowych.
- Dopuszczalne są dodatkowe spacje końcowe (U + 0020) na końcu każdej linii, w tym dodatkowe znaki nowej linii.
- Można używać wszystkich małych liter zamiast wszystkich wielkich liter, ale nie można drukować częściowo małych, a częściowo dużych.
- Możesz zwrócić tekst jako wynik funkcji zamiast drukować go w pełnym programie.
Punktacja
Ponieważ jest to trójkąt, a trójkąt ma 3 boki, a 3 to mała liczba, twój kod powinien być mały pod względem liczby bajtów.
code-golf
kolmogorov-complexity
alphabet
Leaky Nun
źródło
źródło
Odpowiedzi:
Vim, 37 bajtów
Legenda
źródło
:h<_↵↵↵YZZP
), a następnie rejestruję makro (qq…q
), które wielokrotnie wycina literę z górnej linii, tworzy dwie jej kopie, aby wyhodować trójkąt w pionie, a następnie dołącza odciętą literę do wszystkich linii uprawiać go poziomo. Powtarzam to makro 24 razy, aby narysować pełny trójkąt.Logo,
232 207 196190 bajtówCzy ktoś powiedział trójkąty?
Wyjmij kompas i kątomierz i zróbmy to w sposób graficzny. Geometria wykorzystuje trójkąt równoboczny do wyrównania wyników. Wcześniej miałem trójkąt równoramienny, ale zawierał on zbyt wiele miejsc po przecinku. Ta zmiana również skompaktowała dane wyjściowe, zmniejszając stopień przygotowania ekranu i zmiany czcionek, które musiałem zrobić.
Użyłem interpretera internetowego Calormen, żeby go rozwinąć. Jeśli nie masz wystarczającej liczby nieruchomości na ekranie, wszystko się zawinie, ale możesz też zająć się pewnymi liczbami, aby się tym zająć. W przeglądarce korzystałem z trybu pełnoekranowego „F11”.
r
Procedura rysuje linięn
znaków. Postać jest określana automatycznie w zależności od tego, ile segmentów ma użyć. Tenb
parametr mówi, o ile należy tymczasowo obrócić, aby litery były skierowane we właściwym kierunku. Tenl
parametr określa liniową odległość między literami.Te
t
etapy procedury do następnego stanowiska i wywołujer
funkcja czterokrotnie tworzyć trójkąt, obrotowy, gdy to właściwe. Nazwałem go dwa razy dla strony pionowej, ponieważ zajęło to mniej bajtów niż wywołanie go raz ze specjalną obsługą. Koniec procedury ustawia żółwia na początek następnego trójkąta, jeden krok powyżej.Z
to specjalny przypadek, więc po prostu drukujemy go bezpośrednio i obracamy tak, jakbyśmy właśnie zakończyli trójkąt. Wreszciet
nazywa się 25 razy.źródło
Haskell, 58 bajtów
Definiuje funkcję,
t
która zwraca dane wyjściowe jako ciąg.źródło
Galaretka ,
1613 bajtówDzięki @LeakyNun za grę w golfa z 3 bajtów!
Wypróbuj online!
Jak to działa
źródło
Python, 74 bajty
Funkcja Python 2, która drukuje i nie przyjmuje argumentów. Kluczową ideą jest wygenerowanie trójkątnego wzoru tam i z powrotem z rekurencją. Najpierw rozważ tę prostszą funkcję, która drukuje litery „A” do „Z”, a następnie z powrotem do „A”:
Funkcja najpierw drukuje „A” (kod znaków 65), a następnie powraca, aby wydrukować „B” (66) i tak dalej do „Z” (90). Stamtąd przestaje się powtarzać. Po drodze z powrotem w dół stosu rekurencyjnego drukuje dowolny znak
t
wydrukowany na tej samej warstwie, od „Y” z powrotem do „A”.Główny kod robi to samo, tyle że do
s
tej pory kumuluje się w ciąg liter i drukuje ciąg w górę iw dółs+s[-2::-1]
.Dzięki xsot za 2 bajty.
W Pythonie 3 ta sama rzecz jest krótsza o bajt (73 bajty) poprzez umieszczenie wszystkiego w jednym wierszu.
źródło
f(x=66,s='A')
. Umożliwia to aktualizacjęs
w wywołaniu funkcji zamiast w treści funkcji.brainfuck,
1733121119 bajtówNieco bardziej czytelna wersja:
Wyjaśnienie, które może nadejść.
źródło
05AB1E ,
20 13 126 bajtówZaoszczędzono 2 bajty dzięki Adnan.
Oszczędność 6 bajtów dzięki Magic Octopus Urn i nowym funkcjom językowym.
Wypróbuj online!
Wyjaśnienie
źródło
Œ26£
na.p
, który jest poleceniem prefiksu. Możesz także zmienićD,
na=
, który drukuje bez wyskakiwania.gF,
!Â
jest bardzo miłe i naprawdę fajne.û
jest nowszy niż wyzwanie i sprawiłby, że ta odpowiedź nie byłaby konkurencyjna.J,
262322 bajtówWyjaśnienie
źródło
f=:,1}.|.
spróbuj tegoPython 3, 97 bajtów
Ideone to!
źródło
'\n'.join(a+a[-2::-1])
Rubinowy, 71 bajtów
Wypróbuj na repl.it
źródło
> <> , 60 bajtów
Wypróbuj online!
źródło
C,
272247234230144137 bajtów:( Zapisałem wiele bajtów (
272 -> 230
) w mojej poprzedniej metodzie dzięki świetnym wskazówkom i sztuczkom golfowym z sigalor ! )( Zaoszczędzono prawie 100 bajtów (
230 -> 144
), przechodząc na lepszą metodę ).Moja pierwsza odpowiedź w życiu
C
. Niedawno zacząłem sam się uczyć, więc zobaczmy, jak to będzie.C it in Action! (Ideone)
źródło
main()
typ zwrotu, a nawet#include <stdio.h>
. GCC (a także witryny takie jak Ideone) nie mają nic przeciwko. Następnie możesz „zlecić” definicje zmiennych do listy parametrów funkcji. Stańmyfor(int i=65;...
sięfor(i=65...
i zmieńmymain()
namain(i)
. Zrób to samo dla każdej innej zmiennej int (domyślnie brakujące typy GCC toint
).main()
bymain(i)
?i
zmiennej podczas inicjalizacji pętli for, musisz ją zadeklarować gdzie indziej. A ponieważ (przynajmniej w C) parametry funkcji mogą być używane jak normalne zmienne, nie powinno być problemu. Btw, którego kompilatora używasz?C
w Ideone. Otrzymuję kilka<variable> undeclared
błędów.JavaScript (ES6), 81 bajtów
źródło
Mathematica 59 bajtów
źródło
//Column
końca i prefiksowanie koduColumn@
działa.〚
i〛
jako pojedyncze bajty. Wątpię, czy istnieje jednobajtowa strona kodowa, która je ma i jest również obsługiwana przez Mathematica po wyjęciu z pudełka. Mają trzy bajty w UTF-8, więc tak naprawdę niczego nie oszczędzają[[...]]
. Nie jestem również pewien, jak uzasadnionyColumn
jest, ponieważ wyświetla się jak lista linii w notatniku Mathematica. Uruchomienie tego kodu z pliku skryptu niczego nie wyświetli. Jest jednakPrint/@
taka sama liczba bajtów i działa w obu przypadkach.[what you see](actual link)
. Dawny.[Example Link](https://www.example.com)
, który pokazuje jako przykładowy linkDyalog APL, 18 bajtów
źródło
R,
63 6159 bajtówPomocnie
LETTTERS[0]
nie zwraca żadnych znaków.Edycja: straciłem jedną dzięki @leakynun
Edycja: jeszcze dwa dzięki @plannapus
źródło
\n
TSQL, 159 bajtów
Skrzypce
źródło
JavaScript (przy użyciu zewnętrznej biblioteki-Enumerable), 135 bajtów
Link do biblioteki: https://github.com/mvegh1/Enumerable
Objaśnienie kodu: Utwórz zakres liczb całkowitych zaczynając od 1, dla liczby 51. Dla każdego napisz wiersz zgodnie ze złożonym pred. Wykonaj czar JS przy użyciu zmiennych globalnych i buforowania ... i voila. Dla każdej int w WriteLine tworzymy lewy zakres ints i zapisujemy je w globalnym „g”, i String Joining (Write) z
""
separatorem i mapujemy każdą int na mapowanie String na kod int int char. Następnie konkatujemy prawą stronę, wykonując odwrócenie tej sekwencji (i pomijając pierwszy element, ponieważ będzie on pasował do ostatniego elementu pierwotnej kolejności ...), pisząc z tą samą logiką. EDYCJA: Zaktualizowano elementy wewnętrzne zapisu w bibliotece. Pusta sekwencja zapisze teraz pusty ciąg zamiast null. Ogoliło to również 15 bajtów odpowiedziźródło
import sympy
lub sąfrom sympy import*
na górze. Odpowiedzi na Bash + x są różne, ponieważ musisz tylko zainstalować x , a nie jakoś go włączyć.sympy
,numpy
,scipy
itp cały czas.PowerShell,
6152 bajtówDzięki TimmyD za oszczędność 9 bajtów!
Pętle przechodzą przez wartości ASCII dla wielkich liter do przodu, a następnie do tyłu. Dla każdej liczby tworzy to tablicę pierwszych liczb X, usuwa liczbę X-1, a następnie dodaje odwrotność pierwszych liczb X, które są następnie rzutowane na znaki i łączone w ciąg.
źródło
65..90..65
się do kaprysu wcześniej bezskutecznie. Chyba zapomniałem, że mogę po prostu dodać zakresy razem.Cheddar ,
10296796967 bajtów17 bajtów dzięki Downgoat i inspiracja na kolejne 10.
Fakt, że łańcuchy mogą łączyć, ale nie tablice, oznacza, że musiałbym przekonwertować dwa zakresy na łańcuchy, konkatenować, a następnie przekonwertować z powrotem na tablice.
Ponadto fakt, że
vfuse
produkuje wiodące newliens oznacza, że musiałbym wygenerować pierwszą linię ręcznie, a następnie połączyć się z resztą.@"
ponieważ diada (funkcja dwóch argumentów) może konwertować bezpośrednio na ciąg znaków, ale nie działa dla odwróconego zakresu (jeśli pierwszy argument jest większy niż drugi).Zakres był w połowie wliczony. Po usunięciu błędu stało się ono włączone.
Stosowanie
Cheddar, 55 bajtów (niekonkurencyjny)
W najnowszej wersji ze wszystkimi poprawkami odpowiedź brzmi:
ale powstał po wyzwaniu.
źródło
@"(1|>26)
może być1@"26
String.letters
może być(65@"91)
String.letters.slice(0,i)
może być65@"(66+i)
C, 93 bajty
Zadzwoń
f()
bez argumentów.Wypróbuj na ideone .
źródło
VBA, 94 bajty
Zadzwoń w Natychmiastowym oknie za pomocą? T
Aby wyjaśnić, co się dzieje: używam dwukrotnie funkcji Abs, aby odzwierciedlić zarówno ruch alfabetu, jak i długość linii. Jest dobrze dostosowany do zadania ze względu na jedną ekstremalną wartość w obu przypadkach, która odpowiada zerowemu przejściu zmiennej pre-Abs.
Jako prosty zestaw poleceń w oknie Natychmiastowe VBA, a nie program lub funkcja, następujące wymagałyby 72 bajtów:
(dzięki dzięki @GuitarPicker)
źródło
Function T:
, kończyć na:?T
(chociaż zadziałałoby to tylko raz, ponieważ potem trzeba by zresetować T do „” - ale kto potrzebuje więcej niż jednego z tych trójkątów?)?
idziesz z nim;
.Python,
7371 bajtówDzięki @xnor za rekursję
Wyjaśnienie
x
to wartość ascii następnej litery w alfabecies
jest akumulatorem dla alfabetut
jest linią w trójkącie (tj.s
+s backwards
)t
jeśli alfabet jest gotowy (tj. Jesteśmy w centrum)t+f(...)+t
z:x
zwiększonys
dołączony do następnego listut
zresetować dos
+s backwards
+\n
Aktualizacja
\n
(+1) i skrócone warunkowe (-3) wszystko dzięki @xnorźródło
t
przechodząc do następnej pętli. Istnieje jednak dodatkowa wiodąca nowa linia;x=66,s='A''
pozbywa się tego. Podstawę można skrócić dox/92*t or
.HTML + CSS, 884 znaków
(763 znaki HTML + 121 znaków CSS)
Tylko rozszerza Dziurawy Nun „s komentarz na MonkeyZeus ” s odpowiedź . (Chociaż mogę źle odczytać komentarz…)
źródło
Brachylog ,
3729 bajtówPodziękowania dla Fatalize za jego pomoc przez cały czas.
4 bajty dzięki Fatalize i inspiracja dla kolejnych 4 bajtów.
Wypróbuj online!
Predykat 0 (główny predykat)
Predykat 1 (orzecznik pomocniczy)
To w zasadzie buduje palindrom z podanego ciągu.
źródło
,A
w Predicate 1h
, oszczędzając jeden bajt.:1:2yt.
się:2&.
i dodanie!
(punkty wybór cut) na koniec kwantyfikatorów 2.[char:char]y
do generowania sustrówabcd…
zamiast~c[A:B]
R,
127125 bajtówNie do końca usatysfakcjonowany tym rozwiązaniem, zwłaszcza dwiema
for
pętlami, ale nie mógł zaoferować czegoś lepszego!LETTERS
zawiera wielkie litery.Nie golfowany:
ifelse
jest krótszym sposobem na odpalenieif... else...
i działa w ten sposób:ifelse(condition,action if TRUE, action if FALSE)
Inne 125 bajtowe rozwiązanie:
źródło
Java 131 bajtów
Bez użycia ciągu (131 bajtów)
Codegolfed
Z ciągiem (173 bajtów)
Codegolfed
Dzięki manatwork i Kevin Cruijssen
źródło
d!=-1
zd>-1
, takie same dla k. (BTW, zapomniałeś naprawić wersję gry w golfa.)i+=k==1?1:-1
może byći+=k
iSystem.out.print((char)c+(c+d<65?"\n":"")),c+=d==1?1:-1);
może byćSystem.out.print((char)c+((c+=d)<65?"\n":"")));
. Tak więc w sumie staje się ( 131 bajtów ):for(int i=0,k=1;i>-1;k=k>-1&i<25?1:-1,i+=k)for(int c=65,d=1;c>64;d=d>-1&c<65+i?1:-1,System.out.print((char)c+((c+=d)<65?"\n":"")));
pieprzenie mózgu, 79 bajtów
Sformatowany:
Wypróbuj online
źródło
Sesos , 27 bajtów
Wypróbuj online! Sprawdź debugowanie opcję aby zobaczyć wygenerowany kod SBIN.
Montaż Sesos
Powyższy plik binarny został wygenerowany przez skompletowanie następującego kodu SASM.
źródło
/// , 208 bajtów
Oczywiście nie wygrywa, ale oto jest, wyprzedzając Martina Endera ...
źródło