Minecraft 1.12 zostanie wydany jutro, więc świętujmy!
Napisz kod, który przyjmuje nieujemną liczbę całkowitą N, która reprezentuje liczbę elementów czegoś w Minecraft . Wydaj go w sposób bardziej pomocny dla graczy, podając liczbę skrzyń, stosów i przedmiotów, które N jest równoważne. Użyj formatu
XcYsZi
gdzie
X
to liczba skrzyń, które możesz całkowicie wypełnić N przedmiotami,Y
to liczba ładunków, które możesz wypełnić przedmiotami pozostałymi po napełnieniu skrzyń,Z
jeśli liczba przedmiotów pozostała po napełnieniu skrzyń i stosów.
Uwaga:
- 64 przedmioty mieszczą się w stosie. (Zignorujemy przedmioty, które kumulują się do 16 lub nie kumulują się.)
- 27 stosów mieści się w skrzyni. (Są to pojedyncze skrzynie, a nie podwójne skrzynie.)
Tak więc nigdy nie miałoby sensu, jeśli Y
ma więcej niż 26 lub Z
więcej niż 63.
Zastrzeżenie dotyczące formatu polega na tym, że jeśli czegoś jest zero, termin ten nie jest drukowany.
Na przykład, gdyby
Y
były zeroweX
iZ
niezerowe, format wyglądałby takXcZi
.Podobnie jeśli
Y
iZ
było zero iX
niezerowe, format będzieXc
.Wyjątkiem jest sytuacja, gdy N wynosi zero. Potem
0i
jest wyjście, a nie pusty ciąg.
Możesz założyć, że wszystkie N przedmiotów są tego samego typu, a więc wszystkie można ustawiać jeden na drugim.
Nie możesz wypisać listy ani krotki trzech liczb. Musisz podać ciąg z dokładną notacją „csi”, w tej kolejności, bez spacji i przecinków.
Dla porównania, oto skrzynia całkowicie wypełniona stosami przedmiotów:
Przypadki testowe
in -> out
0 -> 0i
1 -> 1i
2 -> 2i
62 -> 62i
63 -> 63i
64 -> 1s
65 -> 1s1i
66 -> 1s2i
127 -> 1s63i
128 -> 2s
129 -> 2s1i
200 -> 3s8i
512 -> 8s
1337 -> 20s57i
1664 -> 26s
1727 -> 26s63i
1728 -> 1c
1729 -> 1c1i
1791 -> 1c63i
1792 -> 1c1s
1793 -> 1c1s1i
4096 -> 2c10s
5183 -> 2c26s63i
5184 -> 3c
5200 -> 3c16i
9999 -> 5c21s15i
385026 -> 222c22s2i
1000000000 -> 578703c19s
Najkrótszy kod w bajtach wygrywa.
Odpowiedzi:
Galaretka ,
2624 bajtówPełny program pobierający numer i drukujący wynik.
Wydaje mi się, że to za długo ...
Wypróbuj online! lub zobacz pakiet testowy .
W jaki sposób?
aktualizuję ...
źródło
Retina ,
494841 bajtówWypróbuj online! Obejmuje wszystkie przypadki testowe z wyjątkiem ostatniego, na wypadek przeciążenia TIO. Edycja: Zapisano 7 bajtów dzięki @MartinEnder. Wyjaśnienie:
Konwertuj liczbę wejściową na unarną, używając
i
s.64 przedmioty wypełniają jeden stos.
27 stosów wypełnia jedną skrzynię.
Konwertuj wszystkie skrzynie, stosy lub pozostałe elementy na dziesiętne, ale pozostawiając typ jako przyrostek.
Jeśli wartość wejściowa wynosiła zero, zrób wynik
0i
.źródło
$.&
powielania się, jak to: tio.runi
zamiast1
, ale po prostu nie widziałem tego uproszczenia, dzięki!C #,
8486 bajtówZwróć uwagę na odejmowanie w linii, nie zdawałem sobie sprawy, że jest to możliwe, ale
i--
miało sens, więc dlaczego niei-=10
Edytować:
dla 0 krawędzi i sugestii.
źródło
_-=_/1728*1728
, aby_%=1728
do golfa kilku bajtów.0
, który powinien skutkować0i
i obecnie nic nie wyświetla. Dodanie po prostu_>0?...:"0i"
naprawiłoby to.>_>
w edytowanej jednegoPython 3 , 87 bajtów
Wypróbuj online!
źródło
/
zamiast//
) i operatora odwrotnego zamiaststr(...)
05AB1E , 24 bajty
Wypróbuj online!
Wyjaśnienie
źródło
0
przypadku wprowadzania i dlaczego to również drukuje znak nowej linii, podczas gdy inne dane wejściowe nie?0
skrzynka0i
będzie na górze stosu (0s
i0c
będzie pod nią) i zostanie wydrukowana.C, 85
87105110111112bajtyWypróbuj tutaj .
Kod działa nawet poprawnie na liczbach ujemnych. Możesz być teraz winien bloki OP serwera!
źródło
JavaScript (ES6),
7776 bajtówPrzypadki testowe
Pokaż fragment kodu
źródło
Java 8, 86 bajtów
Wypróbuj tutaj.
źródło
CJam , 31 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
JavaScript (ES6) 71 bajtów
Skrawek:
Pokaż fragment kodu
źródło
Python 2 , 82 bajty
Przekształciłem komentarz Gabora Fekete z góry na działający przykład:
Wypróbuj online!
źródło
Partia,
347 335 283 246 234 202 199 191189 bajtówźródło
set/a
wyrażeniu, prawda?if %c%==0 (set c=)else rem
ten kod(set
mówi mi, że „ nie należy się spodziewać”Braingolf , 71 bajtów
Wypróbuj online!
W ogóle nie golfa, ale działa
źródło
Mathematica, 155 bajtów
źródło
PHP , 84 bajty
Wypróbuj online!
PHP , 93 bajty
Wypróbuj online!
źródło
T-SQL,
139 134139 bajtówDane wejściowe są przechowywane w kolumnie a istniejącej tabeli t .
Podziały linii dla czytelności, nie liczone jako suma bajtów. Testowane na MS SQL Server 2012.
EDYCJA 1: Zmieniono wiele
REPLACE
na,IIF
aby zapisać 5 bajtów. OstatecznieREPLACE
konieczne, ponieważSTR
irytujące podkładki ze spacjami do 10 znaków.EDYCJA 2: Naprawiono przestrzeganie reguł za pomocą zatwierdzonego typu danych wejściowych SQL, przechowywanych w nazwanej tabeli . Ten bajt kosztów dla
FROM
, również wymagaSELECT
zamiastPRINT
. Odzyskano 2 bajty, upuszczając niepotrzebne pareny.źródło
PowerShell, 113 bajtów
To bardzo precyzyjnie uderza w punkty bólu PowerShell.
[math]::Floor
jest wymagane do tego, ponieważ PS domyślnie wykonuje zaokrąglanie za pomocą bankierów.PS Ternary również zajmuje dużo bajtów w porównaniu do innych języków, aby wykonać prostą koalescencję zerową (
$a="This";$a?$a:"That"
lub"This"?:"That"
) musimy zrobić(($a="This"),"That")[$a-ne$null]
następnie musimy użyć ich wszystkich dwa razy, a także dodać inny zestaw nawiasów w niektórych miejscach ze względu na domyślną kolejność operacji programu PowerShell.
źródło
Python 2 , 77 bajtów
Wypróbuj online!
źródło
dc , 76 bajtów
Wypróbuj online!
źródło