Wygeneruj mi układ QFP!
QFP jest rodzajem kształtu elementu elektrycznego, w którym piny wychodzą z boków układu. Oto zdjęcie typowego komponentu QFP:
widać, że ogólna formuła ma mieć 4 boki równej liczby pinów.
Wyzwanie polega na utworzeniu programu, który przyjmuje liczbę całkowitą, która reprezentuje liczbę pinów po jednej stronie i tworzy komponent ASCII QFP z numerowanymi pinami.
Wkład:
pojedyncza liczba całkowita reprezentująca liczbę pinów po jednej stronie
Wydajność:
Układ ASCII QFP z odpowiednim pinoutem.
Przykład:
wejście: 1
4 ┌┴┐ 1┤ ├3 └┬┘ 2)
wejście: 2
87 ┌┴┴┐ 1┤ ├6 2┤ ├5 └┬┬┘ 34
wkład: 12
444444444333 876543210987 ┌┴┴┴┴┴┴┴┴┴┴┴┴┐ 1┤ ├36 2┤ ├35 3┤ ├34 4┤ ├33 5┤ ├32 6┤ ├31 7┤ ├30 8┤ ├29 9┤ ├28 10┤ ├27 11┤ ├26 12┤ ├25 └┬┬┬┬┬┬┬┬┬┬┬┬┘ 111111122222 345678901234
Zasady:
- wszystkie czipy QFP muszą być zamknięte i zapieczętowane, podobnie jak ascii. odstępy mają ogromne znaczenie. Pył wewnątrz mikroprocesora to złe rzeczy!
- numeracja pinów musi być wykonana jak w przykładach (Czytaj od lewej do prawej, od góry do dołu, numerowane przeciwnie do ruchu wskazówek zegara)
- Możesz zacząć numerowanie od 0, ale nie może to wpływać na układ (wejście 12 nadal wymaga 12 pinów na stronę)
- Jedynymi poprawnymi znakami w twoich wynikach są
1,2,3,4,5,6,7,8,9,0,┌,┴,┐,├,┘,┬,└,┤
spacje i znaki nowej linii. - wszystkie kodowania dla języków są dozwolone, ale Twój wynik MUSI być zgodny z powyższymi regułami.
To jest kodegolf i jako taki wygrywa kod z najmniejszą liczbą bajtów! Powodzenia!
code-golf
string
ascii-art
kolmogorov-complexity
tuskiomi
źródło
źródło
Odpowiedzi:
Mathematica, 271 bajtów
Funkcja anonimowa. Pobiera liczbę jako dane wejściowe i zwraca ciąg znaków jako dane wyjściowe. Unikodowy rysunek Unicode to U + F3C7 (do użytku prywatnego)
\[Transpose]
.źródło
Kotlin ,
397393 bajtówNienazwana lambda.
Możesz spróbować tutaj , ale musisz wkleić źródło w sobie, ponieważ edytor nie wydaje się zapisywać programów w kodowaniu UTF-8. Wersja bez golfa jest pełnym programem, więc powinieneś móc z niego korzystać w całości.
Grał w golfa
(W pewnym sensie) Ungolfed
Zaoszczędził sporo bajtów, przeciążając
%
operatora i używając go do drukowania. Prawdopodobnie wrócę do tego później - myślę, że mogę zaoszczędzić sporo bajtów, jeśli użyjęmod
lub innego operatora jako funkcji konkatenacji. Więcej interpolacji i mniej połączeń drukowania.źródło
Python 2,
352343331 bajtówWypróbuj tutaj. Uwaga: plik musi rozpoczynać się od BOM UTF-8,
\xef\xbb\xbf
aby literały Unicode działały w standardowym interpreterze CPython. Te 3 bajty są tutaj liczone w stosunku do rozmiaru.repl.it
używa już Unicode, więc link ma tylko pokazany kod.Dzięki @tuskiomi za pomysł na kodowanie, który został zapisany
921 bajtów.Częściowo niestrzeżony:
źródło
# -*- coding: utf-8 -*-
plus nowy wiersz na górze, aby tłumacz mógł to zaakceptować. Kodowanie UTF-8 każdego z tych znaków ma 3 bajty, więc nie wystarczyło zapłacić za koszt dyrektywy kodującej. Właśnie sprawdziłem PEP 263 i mogę uciec od just#coding=utf-8
i nowej linii, aby zaoszczędzić trochę bajtów.JavaScript (ES6),
295284 bajtów (268 znaków), niekonkurującyTen kod nie obsługuje numerów pinów powyżej 99 i dlatego prawdopodobnie nie kwalifikuje się jako w pełni poprawny wpis. Dlatego na razie oceniam to jako niekonkurujące.
Można go łatwo zmodyfikować, aby obsługiwał dowolną dużą liczbę pinów, używając szerszych marginesów statycznych wokół układu. Może to jednak również naruszać zasady (nie jestem tego pewien). W pełni dynamiczne marże kosztowałyby znacznie więcej bajtów.
Próbny
Pokaż fragment kodu
źródło
Java 11,
451425393 bajtów-26 bajtów dzięki @ceilingcat .
Wyjaśnienie:
Wypróbuj online.
źródło