Używając tylko drukowalnego ASCII (kody szesnastkowe od 20 do 7E), napisz kwadratowy program podstawowy N × N bez komentarzy, który jest otoczony przez kolejne 4 warstwy , tworząc kwadratowy program (N + 8) × (N + 8) (N> 0) . Dla N = 3 układ (który ma zostać zastąpiony rzeczywistym kodem) wygląda następująco:
44444444444
43333333334
43222222234
43211111234
4321CCC1234
4321CCC1234
4321CCC1234
43211111234
43222222234
43333333334
44444444444
- C reprezentują podstawowy program 3 × 3.
- Jedynki oznaczają pierwszą warstwę, dwójki oznaczają drugą warstwę itp.
Program zawsze przyjmuje ciąg liczb całkowitych oddzielonych spacjami, na przykład 0 -1 31 -1 2 2 2
przez stdin lub podobny (powinny to być zwykłe liczby, bez cudzysłowów, nawiasów itp.). Wynik zależy od tego, które części układu zostały uruchomione.
Istnieje pięć sposobów uruchamiania programu (nowe wiersze są uwzględniane w biegu). Każdy robi coś innego niż lista:
Uruchom tylko rdzeń:
CCC CCC CCC
Oblicza to maksymalne wartości bezwzględne elementów listy wejściowej i drukuje
CORE
wiele razy w nowym wierszu. Jeśli maksimum wynosi 0, nic nie jest wyprowadzane (nowa linia jest w porządku).Wyjściem
0 -1 31 -1 2 2 2
byłobyCORE CORE ...
31 razy.
Uruchom rdzeń z warstwą 1:
11111 1CCC1 1CCC1 1CCC1 11111
Daje to średnią (średnią arytmetyczną ) wartości listy do standardowej precyzji zmiennoprzecinkowej.
- Wynik
0 -1 31 -1 2 2 2
wyniósłby 35/7 =5
(5.0
jest w porządku).
- Wynik
Uruchom rdzeń z warstwami 1 i 2:
2222222 2111112 21CCC12 21CCC12 21CCC12 2111112 2222222
Powoduje to odwrócenie listy rozdzielonych spacjami listy danych wejściowych.
- Wyjściem
0 -1 31 -1 2 2 2
byłoby2 2 2 -1 31 -1 0
.
- Wyjściem
Uruchom rdzeń z warstwami 1, 2 i 3 (wzór powinien być oczywisty).
W ten sposób powstaje rozdzielona spacjami lista posortowanej listy danych wejściowych.- Wyjściem
0 -1 31 -1 2 2 2
byłoby-1 -1 0 2 2 2 31
.
- Wyjściem
Uruchom rdzeń z warstwami 1, 2, 3 i 4.
Spowoduje to utworzenie rozdzielonej spacjami listy danych wejściowych z usuniętymi duplikatami, kolejność nie ma znaczenia.- Wyjściem dla
0 -1 31 -1 2 2 2
może być-1 0 2 31
.
- Wyjściem dla
Wszystkie dane wyjściowe są w standardowej lub podobnej alternatywie.
Tylko te 5 kombinacji układów ma określone zachowanie.
Notatki
- Komentarze nie są dozwolone w rdzeniu, warstwach ani ich kombinacjach. Kod, który nie działa ani nie robi nic konstruktywnego, nie jest liczony jako komentarz.
- Pamiętaj, że rdzeń może mieć dowolne (dodatnie) wymiary N × N, ale warstwy mają grubość tylko jednego znaku.
- Możesz założyć, że na wejściu nie ma spacji początkowych ani końcowych, a dokładnie jedna spacja między liczbami. Zawsze będzie zawierać co najmniej jedną liczbę. (Listy wyników również powinny być sformatowane w ten sposób.)
- Możesz założyć, że lista i obliczenia niezbędne do otrzymania danych wyjściowych nie będą miały wartości, które przepełniają (lub zaniżają) liczby całkowite (o ile ich maksymalna wartość jest rozsądna, np. 2 16 ).
Punktacja
Pisanie tego programu normalnie byłoby łatwe. Pisanie z małym rdzeniem jest trudne.
Program z najmniejszym rozmiarem rdzenia (najmniejszym N) wygrywa. W przypadku remisów zwycięzcą jest pełny program (kwadrat (N + 8) × (N + 8)) z najmniejszą liczbą wyraźnych znaków (nie licząc nowych linii).
Podaj swoją wartość N na górze swojej odpowiedzi.