Napisanie programu, który odczytuje tablicę wartości binarnych, które reprezentują takie modułu, który składa się z mniejszych modułów. Każda wartość określa, czy woksel (mały sześcian) jest obecny w danej pozycji, czy nie. Program musi wypisać podaną tablicę jako grafikę ASCII (co oznacza wyjście przez konsolę lub zapis do pliku).
Przykłady
Rozważmy następujące tablice :
[
[[0,0],
[1,0]]
[[1,1],
[1,0]],
]
[
[[0,0],
[0,0]]
[[1,1],
[1,1]],
]
W takim przypadku wynik powinien wyglądać tak (tutaj nie wygląda tak dobrze, jak w edytorach kodu / konsolach z mniejszą przestrzenią pionową):
+----+
/ /|-+----+
+----+ | /|
| | +----+ |
| | | | +
+ + | |/
| | +----+
| |/
+----+
+----+----+
/ /|
+ + |
/ / +
+----+----+ /
| | +
| |/
+----+----+
Specyfikacje ASCII
Każdy róg woksela jest reprezentowany przez +
dowolną krawędź prowadzącą do niego. +
Są sporządzone, gdy jest liniał, który jest więcej niż jedną jednostkę długości. Istnieją trzy rodzaje krawędzi: poziomy od lewej do prawej ----
, poziomy od tyłu do przodu /
i pionowy
|
|
Każdy z nich musi kończyć się na +
(tak długo widoczny). Krawędzie nie zostaną narysowane, jeśli podzielą jedną płaską płaszczyznę na dwie lub więcej części (inaczej niż +
w stosunku do krawędzi, jak podano powyżej). Struktury ukryte za innymi nie mogą być rysowane.
„Rysunek” jest w zasadzie rzutem równoległym, więc widoczne są tylko górna, prawa i przednia strona - zawsze pod tym samym kątem.
Detale
- 1. wymiar: warstwa po warstwie, od najwyższego do najniższego
- 2. wymiar: rząd za rzędem od tyłu (najdalej) do przodu (najbliżej)
- Trzeci wymiar: woksele w każdym rzędzie od lewej do prawej
Niezależnie od tego, czy korzystasz z konsoli, czy odczytujesz pliki jako dane wejściowe i wyjściowe, zależy od Ciebie. Proszę nam opowiedzieć o kodzie / jak się zbliżał.
Osądzać
To jest kodegolf, więc wygrywa najmniejsza liczba bajtów. Obejmuje to TYLKO tę część, która faktycznie działa - podczas zliczania bajtów można uznać dane wejściowe za już przeanalizowane i zapisane w zmiennej oraz trzeba zapisać ciąg wyjściowy w zmiennej, gotowy do wydrukowania. Analiza i samo wyjście nie jest brane pod uwagę.
(I będę głosować za przesłaniem kreatywnych przykładów =)
To było zainspirowane stroną Puzzle Roba .
Lua (1442 bajty)
Animacje bonusowe! :)
Jeśli masz jakąś fajną grafikę wokselową w tym samym formacie co przykłady, połącz ją w komentarzach, a zrobię z niej
animację
7x7x7 12x12x12
To jest mój pierwszy golfowy kod, więc jest dość niechlujny i planuję ulepszyć lub przeniesienie go na inny język.
Oto, co mam, w tej chwili przy prawie 2,5kB prawie nie grałem (właśnie usunąłem białe wcięcia w tym miejscu, będę kontynuować później)
Oto gra w golfa w wersji ~ 1,4 kB i zminiaturyzowana (zwróć uwagę, że tabela „a” w pierwszym wierszu jest symbolem zastępczym macierzy wokseli):
Edycja : Oto oryginalna (ponad 3kB) wersja bez golfa, w tym moje zmiany do tworzenia animacji (jeśli uruchamiasz ją samodzielnie i chcesz animację, zmień
false
na dole kodu natrue
.Oto próbka kodu, który zapełni macierz wokseli z ciągu znaków macierzy wokseli 3x3x3. (Zajmie każdy ciąg w podobnym formacie, ale upewnij się, że jest to sześcian, bo inaczej prawdopodobnie się zepsuje.)
Aby użyć tego, wstaw tę porcję bezpośrednio po pierwszym wierszu
local v = {}
Oto dane wyjściowe z podanego wzorca wokseli 12 x 12 x 12 : (i tak, wygląda to lepiej na zwykłym urządzeniu do przeglądania konsoli / tekstu, tutaj jest trochę za dużo pionowych odstępów)
Oto wynik z przykładu 7x7x7 tutaj
źródło