Liczba demoniczna jest dodatnią liczbą całkowitą, której reprezentacja dziesiętna składa się tylko z 6. Lista liczb demonicznych zaczyna się od 6, 66, 666, 6666.
Biorąc pod uwagę dodatnią liczbę całkowitą, wypisz najbliższą liczbę demoniczną. Jeśli są dwa, wypisz większy.
Przypadki testowe:
n output
1 6
2 6
3 6
6 6
35 6
36 66
37 66
100 66
365 66
366 666
666 666
999 666
To jest golf golfowy . Najkrótsza odpowiedź w bajtach wygrywa.
code-golf
number
arithmetic
Leaky Nun
źródło
źródło
Odpowiedzi:
Python 2, 28 bajtów
źródło
x=>'6'.repeat((''+-~(x*3/11)).length)
3.6666... = 11/3
..JavaScript (ES6),
3129 bajtówPokaż fragment kodu
„Dlatego lubię słabości […] Bo kiedy jestem słaby, to jestem silny.”
źródło
Brachylog , 8 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Java 7,
969366 bajtówPort @orlp niesamowita odpowiedź na Python 2 .
Wypróbuj tutaj.
Wydaje mi się, że mój licznik 66 bajtów również jest demonem. ;)
(Nie jest to najkrótsza odpowiedź Java między innymi, zobacz zamiast tego odpowiedź @JollyJoker .
źródło
"6"
powinno być""
.Galaretka , 9 bajtów
Link monadyczny.
Wypróbuj online! - Prawie nie ma sensu w tym linku (patrz poniżej)!
W jaki sposób?
W prawdziwym stylu golfisty jest to naprawdę nieefektywne - osiąga limit czasu 60. w TIO dla przypadku testowego 365 ! Lokalnie kończy się to w 37s.
Łatka sprawiająca, że ten sam algorytm działa w granicach 60. dla 365 i 366 na TIO, ma na celu uniknięcie niejawnej wektoryzacji
Ḍ
zẆa6Ḍ€ạÐṂ⁸Ṫ
( spróbuj ), ale teraz będzie to błąd dla wejścia 999 ( trójkąt (999) jest tylko 499,500, ale każda jest listą liczb całkowitych, co daje w sumie Tetrahedr (999) = 166 666 500 liczb całkowitych, mało wydajnych pamięci, przynajmniej w Pythonie).źródło
Galaretka , 10 bajtów
Wypróbuj online!
źródło
‘×3:11Ṿ”6ṁ
ciąg wyjściowy,‘×3:11D6ṁḌ
liczbę całkowitą.C, 118 bajtów
Wypróbuj online
źródło
JavaScript (ES6), 41 bajtów
Przypadki testowe
Pokaż fragment kodu
źródło
Mathematica, 36 bajtów
Czysta funkcja:
Wyjaśnienie:
Iteracyjnie utwórz listę długości równą wartości wejściowej, używając
NestList
wzoru6+10x(previous_value)
zaczynającego się od wartości6
.Następnie znajdź wartość na tej liście najbliżej wejścia.
Na koniec pobierz maksymalną wartość z listy najbliższych wartości.
Podczas gdy długość listy jest bardzo nieefektywna, ponieważ matematyka może pracować z dowolnymi liczbami długości dokładności, program ten jest ograniczony tylko pamięcią fizyczną.
źródło
Szablony uważane za szkodliwe , 118 bajtów
Wypróbuj online!
Nie golfowany:
źródło
05AB1E ,
109 bajtów- 1 bajt dzięki Riley
Wypróbuj online!
Powyższy kod może mieć problemy z wydajnością, tutaj jest nieco bardziej wydajna wersja z 10 bajtami: alternatywa TIO
Wyjaśnienie
źródło
Mathematica, 76 bajtów
źródło
Neim ,
1210 bajtów (niekonkurencyjny)-1 bajt dzięki steenbergh
Wyjaśnienie:
Niestety,
𝕔
zwróci niższą wartość z listy, jeśli dwie liczby mają tę samą różnicę, więc musieliśmy dodać 2 bajty, aby to uwzględnić.Zakaz konkurowania jako
>
,<
iℝ
dodano po to pytano (i𝐥
została ustalona do pracy z liczbami, a nie tylko listy)Uwaga: Nie będzie działać dla liczb o długości równej 19 lub większej - ponieważ stają się one zbyt duże, aby obsługiwały je długo Java. (ale jest to dość duża wartość i powinno być w porządku)
Spróbuj
źródło
Γ6Θℝ)
sięΓΘ𝐈Γ6)𝐣)
?Java 8, 37 bajtów
Idąc za przykładem Kevina Cruijssena i po prostu zwracając .
Wykonaj sztuczkę * 3/11, aby uzyskać odpowiednią długość, a następnie zastąp wszystkie szóstkami.
źródło
-~
, że powinienem był zobaczyć dziesięć razy na tej stronie, gdybym zwrócił uwagę ...QBIC ,
3727 bajtówZamiast używać Maths ™, teraz używa manipulacji ciągiem, aby znaleźć przerwy w Domach Demonicznych (36, 366, ...). Zainspirowany odpowiedzią JS @ eush77.
Wyjaśnienie
źródło
dc , 46 bajtów
Wypróbuj online!
źródło
C #, 142 bajty
Wykorzystuje fakt, że musimy przeskakiwać do następnej liczby demonicznej co 36666 ... W bardziej czytelnej formie:
źródło
braingasm , 15 bajtów
Używając arytmetyki z rozwiązania Python orlp :
źródło
Nie widziałem tego pytania w kanale i potknąłem się o to przez przypadek. Oto i tak moja odpowiedź:
JavaScript (ES6), 34 bajty
Dodaj 1 bajt dla odpowiedzi numerycznej. Pierwotnie oparty na tej nieokreślonej odpowiedzi ES7 (37 bajtów, już numeryczna):
Irytujące OP chce, aby 36 było bliżej 66 niż 6. Objaśnienie: 11/3 = 3,666 ..., więc podzielenie przez to skaluje zakresy 7..36, 37..366 itd. Do zakresów 1..9.9, 10 ..99.9 itd. Można to rozwiązać czysto numerycznie, biorąc 2/3 jednej mniejszej niż kolejna wyższa potęga 10, chociaż golfier jest obcinany, konwertowany na ciąg znaków, a następnie zamienia wszystkie znaki na cyfrę 6. (Chociaż nadal nie tak golfowa, jak ta naprawdę sprytna rekurencyjna odpowiedź.)
źródło
CJam, 25 bajtów
Nie tak powolny jak poddanie galaretki Jonathana Alana, ale wymaga pamięci O (n²) , gdzie n jest liczbą wejściową. Tak.
Jest to równoważne z następującym Pythonem:
Alternatywne rozwiązanie, 12 bajtów
To jest tłumaczenie algorytmu orlp na CJam.
Wyjaśnienie:
źródło
PHP, 49 bajtów
przytnij postać 6
Wypróbuj online!
Zamiast tego
trim($x=$argn+$i,6)>""
możesz użyć rozwiązania Regex!preg_match("#^6+$#",$x=$argn+$i)
+ 11 bajtów lub długości łańcucha równej6
porównaniu liczbystrlen($x=$argn+$i)-strspn($x,6)
+ 10 bajtówźródło
LOLCODE 1.4, 471 bajtów
Łał. Oto Ungolfed i wyjaśniono:
Wow. Oto kilka pseudojavascrython dla ciebie.
Nadal nie rozumiesz? Program ten po prostu (z wyłączeniem wejść 1-3) porównuje dane wejściowe z 3,6 * 10 ^ n, gdzie n jest długością danych wejściowych. Jeśli jest mniejsza niż ta liczba, drukuje liczbę 6s o jeden mniejszą niż długość. Jeśli jest ona większa lub równa tej liczbie, liczba szóstek jest bieżącą długością.
Chciałbym trochę pomóc w grze w golfa!
źródło
Haxe, 70 bajtów
Dane wejściowe muszą być przekazywane jako typ,
Float
mimo że są liczbami całkowitymi, w przeciwnym razie Haxe będzie narzekać na próbę podzielenia liczby całkowitej (tak, haxe odmówi kompilacji, jeśli podzielisz liczbę całkowitą przez cokolwiek)Taki sam jak wszystkie pozostałe odpowiedzi. Pomnóż przez 3, podziel przez 11, wydrukuj 1
6
dla każdej cyfry.źródło
Brainfuck, 315 bajtów
Uruchom tutaj . Wybierz rozmiar komórki, która może obsłużyć wartości 3 * (n + 1), więc aby wszystkie przypadki testowe działały, wybierz 16. Dynamiczna (nieskończona) Pamięć musi być włączona, aby działała. Umożliwia to rozwinięcie taśmy w lewo. Aby wprowadzić liczbę całkowitą, wpisz dane wejściowe jak
\366
dla n = 366.Nie golfowany:
Używa tego samego algorytmu jak to rozwiązanie . Algorytmy stosowane dla każdego kroku pochodzą z tej strony . Wszystkie stosowane algorytmy nie zawijają, dzięki czemu program nie będzie się łamał przy większych wejściach.
źródło
n=n*3
można grać w golfa na coś takiego[->+++<]
? A algorytm divmod podzielić przez 10?05AB1E , 7 bajtów
Wypróbuj online!
źródło
Japt , 9 bajtów
Spróbuj
źródło
C #, 102 bajty
Trochę rozczarowany długością tego, mógł zrobić dokładnie to samo, co krótsza odpowiedź w Javie, ale tak naprawdę tego nie rozumiałem, ponieważ jestem leniwym, głupim programistą .NET :)
źródło