Wyzwanie
Biorąc dodatnia powtórzyć każdy jego cyfry kilka razy odpowiadającej jej pozycji w . Innymi słowy, każdą cyfrę należy powtórzyć razy (dla każdego , 1-indeksowany), tworząc w ten sposób nowy numer:
Następnie zapisz go zarówno w poziomie, jak i w pionie i wypełnij puste miejsca kopiami cyfry, która odpowiada większemu indeksowi między indeksem kolumny a indeksem wiersza pustej przestrzeni. Ostateczne wyjście powinno wyglądać następująco:
Okular
Możesz wziąć jako liczbę całkowitą, ciąg, listę cyfr lub listę znaków reprezentujących cyfry. Dane wyjściowe mogą być ciągiem oddzielonym znakiem nowej linii, listą ciągów / liczb całkowitych lub listą znaków / cyfr, ale jeśli to możliwe, proszę dołączyć również wersję całkiem ładną. Jeśli wynik jest ciągiem oddzielonym znakiem nowej linii, dopuszczalne jest również:
- mają początkowe / końcowe białe znaki, o ile wygląd wyjściowy nie zmienia się
- rozdziel kolumny za pomocą spójnej ilości spacji lub wierszy o stałej (niezerowej) ilości nowych linii
Możesz przyjmować dane wejściowe i dostarczać dane wyjściowe za pomocą dowolnej standardowej metody , zwracając uwagę, że te luki są domyślnie zabronione. To jest golf golfowy , więc spróbuj wykonać zadanie w jak najmniejszej liczbie bajtów, którymi możesz zarządzać w wybranym języku .
Przypadki testowe
65:
655
555
555
---------------
203:
200333
000333
000333
333333
333333
333333
--------------
233:
233333
333333
333333
333333
333333
333333
---------------
5202:
5220002222
2220002222
2220002222
0000002222
0000002222
0000002222
2222222222
2222222222
2222222222
2222222222
---------------
12345:
122333444455555
222333444455555
222333444455555
333333444455555
333333444455555
333333444455555
444444444455555
444444444455555
444444444455555
444444444455555
555555555555555
555555555555555
555555555555555
555555555555555
555555555555555
Odpowiedzi:
JavaScript (ES7), 70 bajtów
Pobiera dane wejściowe jako ciąg. Zwraca ciąg z końcowym podawaniem linii.
Wypróbuj online!
W jaki sposób?
metoda
Budujemy wyjściowy znak po znaku, przechodząc przez macierz kwadratową i przekształcając każdą komórkę w indeks w ciąg wejściowy.jax , y
Współrzędne do indeksu ciągów
Górna granica obszaru (indeksowane 0) wzdłuż każdej osi jest podana przez A000096 : n t hun nt godz
u0=0,u1=2,u2=5,u3=9,u4=14,u5=20,…
Biorąc pod uwagę liczbę całkowitą , możemy dowiedzieć się, w którym obszarze znajduje się, rozwiązując:n = ⌊ x ⌋ + 1k n = ⌊ x ⌋ + 1
Prowadzący do:
n=⌊ √
Dla każdej komórki definiujemy:( x , y)
Te wartości są konwertowane na indeksy na ciąg wejściowy, wykonując:przeciwkox , y jax , y
Warunki zatrzymania
Wiemy, że osiągnęliśmy:
prawa granica macierzy, gdy znak w nie istnieje i mamyjax , y x > y
dolna granica macierzy, gdy znak nie istnieje i mamyx ≤ y
źródło
J ,
1615 bajtów-1 bajt dzięki FrownyFrog!
Wypróbuj online!
Przyjmuje
N
jako sznur.Objaśnienie pierwszego rozwiązania:
Sesja testowa z wejściem
203
:źródło
)
, twoja odpowiedź APL jest taka sama, jak moja, która byłaby moja.[:<:@
wydaje się dość kosztowny. Czy możesz zamiast tego wstawić coś do listy, którą indeksujesz, aby uwzględnić indeksowanie 1 (np. Wstaw wartość 0, aby przesunąć każdy niezbędny element o 1 pozycję w prawo)?{⍵[∘.⌈⍨(/⍨)⍳⍴⍵]}
?Haskell ,
605958 bajtówWypróbuj online!
Wersja bez punktów (68 bajtów)
Wypróbuj online!
źródło
Python 2 , 71 bajtów
Wypróbuj online!
Najpierw generuje pierwszy wiersz
r
, a następnie iteruje,r
aby wydrukować każdą linię.źródło
R , 59 bajtów
Wypróbuj online!
źródło
a
jako wektor znaków, co pozwala ustawićg=seq(a)
bezpośrednio.Galaretka , 7 bajtów
Wypróbuj online!
Wyjaśniona produkcja.
źródło
05AB1E ,
141110 bajtówZaoszczędzono 1 bajt dzięki Magic Octopus Urn / Adnan
Wypróbuj online!
Wyjaśnienie
źródło
APL (Dyalog Classic) , 16 bajtów
Oddzielam to rozwiązanie od postu moją odpowiedzią J, zgodnie z sugestią Jo Kinga
Wypróbuj online!
źródło
Python 2 , 74 bajty
Wypróbuj online!
źródło
Excel VBA, 95 bajtów
Anonimowa funkcja natychmiastowego okna VBE, która pobiera dane wejściowe
[A1]
i wyjściowe z konsoliNie golfił i skomentował
źródło
MATL ,
1512 bajtówWypróbuj online!
Podejrzewam, że można to skrócić, ale nie jest tak źle ...
źródło
Dodaj ++ , 35 bajtów
Wypróbuj online!
Jak to działa
Pobieramy dane wejściowe jako listę cyfr, jednocześnie zapobiegając: a) konieczności rzutowania na cyfry za pomocą
BD
, a także konieczności zapisywania cyfr, co zajęłoby dwa bajty.bLR
dBcB]
£X
¦Ω+
Następnie możemy powielać tę tablicę i stół go maksimum
d‽b>
. Oznacza to, że każdy element w tablicy jest sparowany ze sobą z drugim elementem z drugiej tablicy, a dynamiczne polecenie maksymalne jest uruchamiane na parze. Na przykładowe wejście [6 5] tworzy tablicę [1 2 2 2 2 2 2 2 2] , która jest spłaszczoną wersją mozaiki, jako indeksy tablicy. Niestety Dodaj ++ używa 0 indeksowane tablice, więc musimy zmniejszyć każdy element:1€Ω_
.A
€Ω:
AbLR¦+
T
$
T
źródło
Węgiel drzewny , 17 bajtów
Wypróbuj online! Wyjaśnienie:
Pętla nad indeksami znaków w odwrotnej kolejności.
Oblicz rozmiar kwadratu.
Narysuj kwadrat, używając bieżącej postaci.
źródło
Płótno , 12 bajtów
Wypróbuj tutaj!
źródło
Python 2 ,
7673 bajtów-3 bajty dzięki Lynn .
Wypróbuj online!
źródło
Węgiel drzewny , 14 bajtów
Wypróbuj online!
W jaki sposób?
... czy tą metodą można grać w golfa?
źródło
×⊕κι
dwa razy.ι
iκ
zmieniają się przy każdej iteracji każdej pętli.Stax , 12 bajtów
Uruchom i debuguj
Korzystanie z tego algorytmu .
Wyjaśnienie:
Stax ,
20191816 bajtówUruchom i debuguj
Wyjaśnienie:
źródło
Attache , 34 bajty
Wypróbuj online!
Wyjaśnienie
Działa podobnie do odpowiedzi J Galena Iwanowa .
źródło
K (ngn / k) , 16 bajtów
Wypróbuj online!
źródło
C (gcc) , 130 bajtów
Kto potrzebuje wymyślnej matematyki, kiedy można brutalnie wykorzystać?
Wypróbuj online!
źródło
QBasic 1.1 , 127 bajtów
-4 dzięki DLosc .
Używa zmodyfikowanej wersji algorytmu xnor Python 2 .
Dane wejściowe to ciąg niecytowany. Dane wyjściowe są
\n
oddzielane bez dodatkowych spacji lub znaków\n
s.źródło
QBasic , 111 bajtów
Anonimowa funkcja monitująca o dane wejściowe i wyjściowe do konsoli.
źródło
Php 7.1 , 163 bajty
Za pośrednictwem interfejsu CLI, podając numer jako argument:
Nie tak golfowy:
Wydajność:
Metoda:
Zasadniczo zbuduj wielowymiarowe kwadraty tablic składające się z cyfry, a następnie nałóż je wszystkie (array_replace_recursive).
(Tak, wiem, że to krępująco długie).
źródło
Rubinowy , 80 bajtów
Wypróbuj online!
Podobne do odpowiedzi OVS
źródło
Japt, 12 bajtów
Pobiera dane wejściowe jako ciąg, generuje tablicę ciągów.
Spróbuj
Wyjaśnienie
źródło
uBASIC , 120 bajtów
Anonimowa funkcja, która pobiera dane wejściowe foprm STDIN i dane wyjściowe do STDOUT
Wypróbuj online!
źródło
Visual Basic .NET (VBC) , 198 bajtów
ZA
Sub
Rutynowe, które trwa od wejścia stdin i wyjść na standardowe wyjście.Wygląda na to, że StrDup nie działa: /
Wypróbuj online!
źródło
Lua,
149140 bajtówFunkcja, która przyjmuje listę ciągów cyfr i wypisuje wynik na standardowe wyjście. To moja pierwsza próba gry w golfa kodowego (a wybór języka też nie pomaga), więc proszę o wyrozumiałość :)
Wypróbuj online!
Nie golfowany:
źródło
Perl 5 +
-nalF -M5.010
, 67 bajtówWypróbuj online!
źródło
Yabasic , 108 bajtów
Anonimowa funkcja, która pobiera dane wejściowe ze STDIN i dane wyjściowe do STDOUT
Wypróbuj online!
źródło