Nienawidzę nadęty kod!
Postanowiłem więc zastąpić mój system Windows 7 wersją golfową. Wiem jednak, że nie jest to łatwe, więc najpierw zbudujmy prototyp. Spowoduje to pobranie listy okien od użytkownika i wyświetlenie ich za pomocą pseudo-graficznego wyświetlacza na standardowym wyjściu.
Na przykład: dane wejściowe użytkownika:
0,0,15,10 15,10,20,15 10,13,15,15 9,1,16,3 17,5,20,7 11,2,17,4 15,4,19,6 13,3,18,5
Wyjście Code Golf® Window Manager ™:
┌──────────────┐ │ :::::::: ┌─────┴┐ │ :::::::: │: ┌────┴┐ │ :::::::: └─┤: ┌───┴┐ │ :::::::::: └─┤ :::: ├┐ │ ::::::::::::: └─┬──┘├┐ │ :::::::::::::: ├─┬─┘│ │ ::::::::::::::: │ └──┘ │ :::::::::::::: │ │ :::::::::::::: │ └──────────────┼────┐ │ :::: │ │ :::: │ ┌────┤ :::: │ │ :::: │ :::: │ └────┴────┘
Wejście:
- Pobrane ze standardowego wejścia (lub, jeśli twój system nie ma
stdin
, jakiejkolwiek metody, która może zapewnić kilka linii wejściowych) - Każda linia zawiera 4 liczby, oddzielone przecinkami - współrzędne okna
- Pierwsze dwie cyfry: lewy górny róg; dwie ostatnie cyfry: prawy dolny róg
- Za pomocą
x,y
notacji
Wynik:
- Zapisz go na standardowym wyjściu (lub, jeśli twój system nie ma
stdout
, cokolwiek, co wyświetla tekst o stałej szerokości) - Do rysowania granic okien używaj pojedynczych znaków do rysowania ramek ze strony Kod 437
- System Windows określony później w danych wejściowych zasłania te określone wcześniej
- Wypełnij okna znakiem dwukropka:
:
- Wiodące i końcowe spacje są OK, o ile nie naruszają wyrównania okien
Uwagi:
- Maksymalna rozdzielczość, którą chcę obsługiwać: 76 (poziomo) na 57 (pionowo)
- Nie ma potrzeby obsługi złych danych wejściowych
- Maksymalna liczba okien: 255 (jeśli potrzebujesz limitu)
- Moja
cmd
powłoka systemu Windows 7 domyślnie wyświetla 437 znaków strony kodowej; jeśli ktoś ma sposób to zrobić na Linuksie (używającxterm
lub cokolwiek), opisz to tutaj
Dla porównania, kody znaków to:
┌da ─c4 ┬c2 ┐bf
│b3 :3a │b3 │b3
├c3 ─c4 ┼c5 ┤b4
└c0 ─c4 ┴c1 ┘d9
Łącznie: 12 różnych postaci.
javascript:$('pre').css('line-height','1em')
Odpowiedzi:
Python, 397 znaków
Zmień
C="...
naC=u"...
i zamiast tego wydrukuje w Unicode! Prawidłowe zapisanie pliku może być trudne, ponieważ znaki strony 437 strony kodowej nie są poprzedzane znakami (wymagana jest pierwsza linia komentarza „kodującego”).Podejście polega na stopniowym budowaniu mapy przy użyciu operatorów bitowych. Wersja mniej golfowa z komentarzami:
źródło
JavaScript ES6 (FF ≥ 31,0), 404 znaków
Bez ES6:
w('0,0,15,10\n15,10,20,15\n10,13,15,15\n9,1,16,3\n17,5,20,7\n11,2,17,4\n15,4,19,6\n13,3,18,5');
wypisuje poprawnie przykład PO.Krawędzie okien są budowane przy użyciu bitowych operatorów (góra = 8, dół = 4, lewo = 2, prawo = 1).
źródło
function w(s){...}
staje sięw=(s)=>{...}
(i podobnie jak w przypadku wszystkich innych literałów funkcji). I tablicę odnośników można prawdopodobnie zastąpić ciągiem zawierającym te same znaki.Array.fill()
do zainicjowania na „pulpicie”.[].fill([].fill(0,0,76),0,57)
, szkoda, że to nie działa. Czy mogę pisać krócejnew Array(57).fill(new Array(76).fill(0))
?new
operatorów:Array(57).fill(Array(76).fill(0))
.Python, 672 znaki
Mniej czytelna wersja:
Rozpoczęty od wersji poniżej:
źródło