To jest 3x3
układanka ASCII:
_____ _____ _____
| _| |_ |
| (_ _ _) |
|_ _|_( )_|_ _|
| (_) |_ _| (_) |
| _ _) (_ _ |
|_( )_|_ _|_( )_|
| _| (_) |_ |
| (_ _) |
|_____|_____|_____|
Jest to również 3x3
układanka ASCII:
_____ _____ _____
| |_ _| |
| _ _) (_ _ |
|_( )_|_ _|_( )_|
| _| (_) |_ |
| (_ _ _) |
|_ _|_( )_|_ _|
| (_) |_ _| (_) |
| _) (_ |
|_____|_____|_____|
Każda linia układanki ASCII (z wyjątkiem skrzynek na krawędzie, tj. Elementów dosłownie na krawędziach) składa się z następującego wzoru:
_ _ _
_( )_ _ _ _( )_ _ _ _( )_
|_ _| (_) |_ _| (_) |_ _|
_) (_ _ _) (_ _ _) (_
|_ _|_( )_|_ _|_( )_|_ _| ...
(_) (_) (_)
Biorąc pod uwagę 2 liczby całkowite H
i W
gdzie H
jest wysokość (wysokość w pionie) i W
szerokość (kwota w poziomie) H
i W
są >1
wyprowadzane możliwe HxW
układanki ASCII.
Przykłady
Przypadek testowy 1
Wkład: 2, 4
Wydajność:
_____ _____ _____ _____
| |_ _| |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _) (_ |
|_____|_____|_____|_____|
Przypadek testowy 2
Wkład: 4, 4
Wydajność:
_____ _____ _____ _____
| |_ _| |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _ _) (_ _ |
|_ _|_( )_|_ _|_( )_|
| (_) |_ _| (_) |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _) (_ |
|_____|_____|_____|_____|
Przypadek testowy 3
Wkład: 3, 5
Wydajność:
_____ _____ _____ _____ _____
| |_ _| |_ _| |
| _ _) (_ _ _) (_ _ |
|_( )_|_ _|_( )_|_ _|_( )_|
| _| (_) |_ _| (_) |_ |
| (_ _ _) (_ _ _) |
|_ _|_( )_|_ _|_( )_|_ _|
| (_) |_ _| (_) |_ _| (_) |
| _) (_ _) (_ |
|_____|_____|_____|_____|_____|
Przypadek testowy 4
Wkład: 2, 2
Wydajność:
_____ _____
| _| |
| (_ _ |
|_ _|_( )_|
| (_) |_ |
| _) |
|_____|_____|
Wyjaśnienia
- Wysokość i szerokość każdego elementu układanki nie powinny być powiększane ani zmniejszane.
- Z
H
iW
będąc większym niż jeden, najmniejsze możliwe wymiary to2x2
(patrz IO 4). - Możesz mieć pełny program lub funkcję.
- Dane wejściowe będą składały się z 2 linii z
H
1 iW
2, jeśli używasz funkcji, możesz mieć je w parametrach. - Wyjście na standardowe wyjście (lub coś podobnego).
- To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w bajtach.
Odpowiedzi:
JavaScript (ES6) 272
277 271Edytuj poprawkę błędu
Edytuj 2 zapisane 6 bajtów thx @ L.Serné
Edytuj ponownie 3 poprawki błędów
Mniej golfa
Test
źródło
for(t=z(' _____',0,0)+z('|_ _| ',2,--h)+z(b=' _) (_ _ ')+z(c='|_ _|_( )_',0);--h;a='|_ _| (_) ')
Zapisuje to 4 przecinki, więc otrzymujesz tylko 273 znaków. EDYCJA: Fragment testowy jest nadal błędny ...t=...
do for, nie powiedzie się dla h == 2. To właśnie błąd, który naprawiłem dzisiaj.undefined
okazało się zadeklarowaniea
w ostatniej częścifor
pętli. Trochę zmieniłem kod i skończyłem z tym. Powinieneś być w stanie zintegrować to z eval dla kolejnego zapisu 2B.(w,h,z=(s,q=3,i=h)=>'| '.slice(0,q)+s.repeat(w).substr(i%2*6+q,w*6-2*q+1)+' |\n'.slice(~q),a='|_ _| (_) ')=>{for(t=z(' _____',0,0)+z('|_ _| ',2,--h)+z(b=' _) (_ _ ')+z(c='|_ _|_( )_',0);--h;)t+=z(a,2)+z(b)+z(c,0);return t+z(a,2)+z(' _) (_ ')+z('|_____',1)}
(276 B).Python, 513 bajtów
Być może jest to raczej ćwiczenie polegające na zaciemnianiu niż na grze w golfa. Działa to, decydując, do której postaci
(x,y)
dąży każda ze współrzędnych, zamiast budować każdy wzór po łańcuchu. Wygląda na to, że nie ma golfaSame wzory wyglądają
widzimy to jako tablicę przeglądową z liczb całkowitych z kolumnami pobranymi mod 6 i wierszami mod 3
Ta strategia łączenia różnych wzorów tak naprawdę mi się nie przydała, ponieważ ich wyrażanie jest dość kłopotliwe (choć myślę, że mógłbym więcej zagrać w golfa) i ponieważ przypadki krawędzi wymagają naprawy tak wielu postaci. Podnoszę to niezależnie, ponieważ zajęło mi to minutę i może być interesujące.
źródło
Mathematica, 384 bajty
Nienazwana funkcja przyjmująca za argument argument uporządkowaną parę liczb całkowitych i zwracająca ciąg zawierający odpowiednie znaki nowej linii. Z dodanymi spacjami i znakami nowej linii:
źródło
Partia,
562528 bajtówOkazało się, że jest odporny na grę w golfa, ponieważ powtórzenie zwykle kosztowało zbyt wiele bajtów, aby go wyeliminować, na przykład ręcznie przekazuję numer linii mod 3, ponieważ jest zbyt drogi do obliczenia. Edycja: Co więcej, co nieumyślnie grałem w dodatkowe
|
linie co trzecią linię, co jest nieprawidłowe. Naprawienie tego faktycznie zaoszczędziło mi 2 bajty (4 bajty w mojej oryginalnej wersji). Objaśnienie:a
zawiera różne kawałki układanki. W:t
swapy funkcyjne ich przez każdego zestawu trzech rzędach, a następnie wyodrębnia żądane podciągi których:c
funkcja powtarza się parami, a usuwanie pierwszej kolumny, jeśliw
jest nieparzysta. Przypadki lewej i prawej krawędzi są następnie obsługiwane przed wyjściem wiersza.Drugi przypadek krawędzi to pierwszy rząd, w którym!
s są zamieniane na spacje zamiast|
s (kod unika|
s, ponieważ jest trudny w obsłudze we wsadzie).źródło
Befunge,
263243 bajtówWypróbuj online!
Działa to poprzez iterację współrzędnych x, y obszaru, który chcemy wygenerować, i odwzorowanie tych wartości x , y na współrzędne u , v we wzorze układanki (zapisanym w pierwszych trzech liniach pola gry). To odwzorowanie osiąga się za pomocą następujących podstawowych formuł:
U koordynować powtarza się co 12 kolumn, ale również musi być przesunięty o 6 co 3 rzędach. V współrzędnych powtarza się co 3 wiersze, ale dodać
y==0
do wartości więc pierwszy rząd może być przedstawiany jako szczególny przypadek. Jednak aby obsłużyć krawędzie, musimy wprowadzić dodatkową wartość logiczną e , która jest prawdziwa dla różnych lokalizacji krawędzi i która dostosowuje formuły w następujący sposób:Tak więc, jeśli jesteśmy na krawędzi, dodajemy 4 do współrzędnej v , aby zastosować prostszy wzór krawędzi na liniach od 5 do 7. A także musimy teraz zmodyfikować współrzędną u o 6 zamiast 12, ponieważ ten wzór krawędzi powtarza się co 6 kolumn.
Jeśli chodzi o samą wartość e , wymaga to dość złożonej formuły, ponieważ lokalizacje krawędzi obejmują nieco nieregularny obszar granicy puzzli.
Bez wchodzenia w zbyt wiele szczegółów, podstawowym podziałem jest to, że elr dopasowuje lokalizacje krawędzi wzdłuż lewej i prawej krawędzi, podczas gdy etb dopasowuje lokalizacje wzdłuż górnej i dolnej granicy.
źródło
JavaScript (ES6), 285 bajtów
To jest część mojej odpowiedzi wsadowej, aby zobaczyć, czy konkuruje z odpowiedzią @ edc65. Irytująco długi sznurek zawiera elementy układanki. Pierwsze sześć elementów reprezentuje dwa rzędy jednej kolumny wnętrza układanki. Siódmy kawałek jest używany do przedostatniej linii układanki, zamiast czwartego elementu. Ósmy kawałek jest używany w drugiej linii wyrzynarki, zamiast piątego elementu, a także pełni podwójną funkcję jako lewa krawędź wyrzynarki. Dziewiąty element to ostatnia linia układanki.
źródło