Wprowadzenie:
Jestem kolekcjonerem łamigłówek. Tutaj możesz zobaczyć moją aktualną kolekcję ± 300 zagadek.
Myślę, że wszyscy znają zwykłą Kostkę Rubika (Kostka 3x3x3), która jest Kostką NxNxN . Istnieją również prostopadłościany (puzzle w kształcie klocków), które występują w różnych formach, być może lepiej wyjaśnione tutaj przez SuperAntionioVivaldi :
- Zwykłe prostopadłościany Domino (takie jak 2x2x3 ; 2x3x3 ; 3x3x4 ; itp.) - Występują w postaci NxNx (N + O) lub Nx (N + O) x (N + O) , które mają albo dwa nieparzyste wymiary, a parzysty lub dwa parzysty i nieparzysty.
- Prostopadłościany zmiennokształtne (jak 2x2x4 ; 3x3x5; 3x3x9 ; 4x4x6 ; itd.) - Występują w postaci NxNx (N + P) , które jak sama nazwa wskazuje, zmieniają kształty (we wszystkich kierunkach). Wszystkie trzy wymiary są nieparzyste lub parzyste.
- Floppy Cuboids (jak 1x3x3 ; 2x4x4 ; itp.) - Występują w postaci Nx (N + P) x (N + P) , które są prawie takie same jak zmiennokształtni, ale z tak zwanymi parytetami dyskietek.
- Brick Cuboids (jak 2x3x4 ; 3x4x5 ; 2x3x5; itp.) - Występują w postaci Nx (N + O) x (N + P), które podobnie jak zwykłe prostopadłościany Domino mają albo dwa dziwne wymiary, a parzystą, lub dwa parzyste i nieparzyste; ale nie mają takich samych wymiarów.
- Ultimate Shapeshifters (jak 2x4x6 ; 3x5x7; 2x4x10; itd.) - Występują w postaci Nx (N + O) x (N + R) i zmieniają kształty w dowolnym kierunku. Wszystkie trzy wymiary są albo nieparzyste, albo parzyste; ale nie mają takich samych wymiarów.
Wyzwanie:
Wejście:
Dodatnia liczba całkowita n z następującym ograniczeniem: 8 <= n <= 125.
n można jednoznacznie zdekodować jako iloczyn trzech wartości (wymiarów), z których każda zawiera się między 2 a 5 włącznie.
Powodem, dla którego ograniczyłem go do 2-5, jest zapobieganie powielaniu danych wejściowych (takich jak 1x2x4 = 8
i 2x2x2 = 8
), mimo że istnieje wiele prostopadłościanów niższego / wyższego rzędu . Oznacza to również, że nie ma przypadków testowych dla Ultimate Shapeshifters.
Przypadki wyjściowe / testowe:
Są to wszystkie przypadki, które powinien obsługiwać Twój program / funkcja, od długości krawędzi od 2 do 5 w każdej możliwej konfiguracji trójwymiarowej:
Input Cuboid/Cube Type/Output
8 2x2x2 Cube
12 2x2x3 Regular Domino Cuboid
16 2x2x4 Shapeshifter Cuboid
20 2x2x5 Regular Domino Cuboid
18 2x3x3 Regular Domino Cuboid
24 2x3x4 Brick Cuboid
30 2x3x5 Brick Cuboid
32 2x4x4 Floppy Cuboid
40 2x4x5 Brick Cuboid
50 2x5x5 Regular Domino Cuboid
27 3x3x3 Cube
36 3x3x4 Regular Domino Cuboid
45 3x3x5 Shapeshifter Cuboid
48 3x4x4 Regular Domino Cuboid
60 3x4x5 Brick Cuboid
75 3x5x5 Floppy Cuboid
64 4x4x4 Cube
80 4x4x5 Regular Domino Cuboid
100 4x5x5 Regular Domino Cuboid
125 5x5x5 Cube
Zasady konkursu:
- Każde wejście inne niż kostka / prostopadłościan w zakresie 8-125 powinno skutkować „brakiem” jako wyjście.
- Format wyjściowy jest twoim własnym wyborem. Myślę, że najbardziej rozsądne są liczby całkowite, takie jak
0
= „none”;1
= Kostka;2
= Zwykły prostopadłościan domina;3
= Prostopadłościan zmiennokształtny;4
= Floppy Cuboid;5
= Cegła Prostopadłościan. Każdy inny format wyjściowy jest również w porządku, pod warunkiem, że określisz, którego użyłeś.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione. ( UWAGA: Ponieważ nie wiem, czy istnieje inteligentna formuła konwersji danych wejściowych na wyjściowe, dozwolone jest kodowanie odpowiedzi na podstawie danych wejściowych ).
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.
źródło
24
), Więc nie wiem, co chcesz na ten temat uporządkować?Odpowiedzi:
05AB1E ,
2621 bajtówNone: 0 Cube: 1 Regular Domino Cuboid: 2 Shapeshifter Cuboid: 3 Brick Cuboid: 4 Floppy Cuboid: 5
Wypróbuj online! lub jako pakiet testowy
Wyjaśnienie
Jedyne miejsce, w którym możemy tutaj zapisać bajty, to lepszy sposób na wygenerowanie liczby 123224454212324512210 .
Jest to tylko jeden raz z liczby pierwszej, więc jednym z możliwych zapisów byłoby znalezienie indeksu tej liczby pierwszej i wygenerowanie indeksu w mniej niż 9 bajtach.
Nie wiem, jak dobrze działa funkcja pi dla liczb pierwszych 21-cyfrowych, ale taka może być możliwość.
źródło
k
istnieje? !! ??!?!?!?!JavaScript (ES6),
979286 bajtówTa funkcja najpierw sprawdza poprawność danych wejściowych, a następnie wybiera prawidłową wartość z tabeli odnośników.
Nieoczekiwanie stwierdzono, że jest to najdłuższa sprawdzenie ważności (czy n z formy x * y * oo o x , Y i Z w [2,3,4,5] ?). Musi istnieć krótszy sposób, ale jak dotąd nie mogłem tego rozgryźć.
Zwraca postać:
Test
Pokaż fragment kodu
źródło
Rubin,
106 9896 bajtówPonieważ dlaczego nie, na stałe.
Jak podano, 0 = „brak”; 1 = kostka; 2 = Prostopadłościan Domino; 3 = prostopadłościan zmiennokształtny; 4 = dyskietka prostopadłościan; 5 = prostopadłościan
źródło
Perl 6 ,
6958 bajtówWykorzystuje format wyjściowy liczb całkowitych sugerowany w opisie zadania, z tym wyjątkiem, że zwraca niezainicjowaną wartość
(Any)
zamiast0
w przypadku danych wejściowych, które nie tworzą prawidłowej kostki / prostopadłościanu.Jak to działa
Generuje listę
8 12 16 20 18 24 30 32 40 50 27 36 45 48 60 75 64 80 100 125
.Generuje listę
1 2 3 2 2 5 5 4 5 2 1 2 3 2 5 4 1 2 2 1
(z dosłownego base-32).Generuje skrót (mapa asocjacyjna) z pierwszą listą jako kluczami, a drugą listą jako wartości.
Indeksuje skrót za pomocą numeru wejściowego.
źródło
Partia, 163 bajty
Używa sugerowanego formatu wyjściowego. Objaśnienie: Podstawową ideą jest zapętlenie listy kostek zdefiniowanych w pytaniu. Dla każdej kostki obliczamy, czy jej objętość jest liczbą całkowitą wejściową, a jeśli tak, oblicz typ kostki na podstawie tabeli odnośników.
Oryginalna tabela odnośników była ciągiem liter, ale manipulowanie ciągiem w
for
pętli jest trudne, więc przełączyłem się na cyfry, które można wyodrębnić arytmetycznie. Niestety Batch jest ograniczony do 32-bitowych liczb całkowitych, więc nie mogłem dopasować wszystkich cyfr do jednej zmiennej (nawet w bazie 5 można uzyskać tylko 13 cyfr), więc zamiast tego podzieliłem zmienną na dwie części, zakodowane w bazie 6 dla wygody.29948521
znajduje się2545522321
w podstawie 6, która koduje 10 najmniejszych prostopadłościanów w odwrotnej kolejności; gdy zabraknie cyfr dodamy14081593
który jest1221452321
w bazie 6 kodującego 10 największych prostopadłościanów.źródło