Biorąc pod uwagę liczbę n
i l
listę górnego limitu, liczby, które można utworzyć, mnożąc dwie lub więcej liczb składających się wyłącznie z siódemek o długości n
lub mniejszej, które są mniejsze niż l
. A161145 jest bliski temu wyzwaniu, jednak NIE będzie zawierać 7, 77, 777, 7777, 77777 itp.
Przykłady
n=anything, l<49
spowodowałoby:
[]
n=1, l=49
spowodowałoby:
7*7=49
f(1,49)=[49]
n=1, l=343
spowodowałoby:
7*7 =49
7*7*7 =343
f(1,343)=[49,343]
n=2,l=6000
spowodowałoby:
7*7 =49
7*7*7 =343
7*7*7*7=2401
7*77 =539
7*7*77 =3773
77*77 =5929
f(2,6000)=[49,343,539,2401,3773,5929]
n=3, l=604000
spowodowałoby:
[49, 343, 539, 2401, 3773, 5439, 5929, 16807, 26411, 38073, 41503, 59829, 117649, 184877, 266511, 290521, 418803, 456533, 603729]
Itp...
Zasady
- Ci nie muszą wyjściowych etapów pośrednich, zrobiono to dla jasności.
- Dane wyjściowe mogą być w postaci tablicy lub być oddzielone dowolnym znakiem (nawet znakiem nowej linii).
- Dane wyjściowe muszą być uporządkowane numerycznie, od najniższej do najwyższej.
- Aby tytuł był odpowiedni, najwyższy, z
n
którym trzeba sobie poradzić, ton=77
poradzić, (jeśli nie możesz sobie z tym poradzić, zauważ, dlaczego - ograniczenia językowe są dopuszczalne, lenistwo nie). Ograniczenie to ma utrudnić tym, którzy chcą zbudować cały superset w pamięci. - Jeśli TIO nie może działać
n=77
dla Twojego kodu, wyjaśnij, jakie specyfikacje były wymagane do osiągnięcian=77
. - Aby produkt był ważny, musi składać się z co najmniej 2 cyfr.
- To jest golf golfowy najniższa liczba bajtów zostanie uznana za zwycięską.
- Możesz wybrać listę, aby zawierała pozycje mniejsze
l
lub mniejsze niż / równel
. - BONUS : Jeśli twój kod ma dokładnie 77 bajtów, ode mnie odznaczenia; bezwartościowe, wiem.
n
lub mniejszej, które są mniejsze niżl
”n=77
il=7**7**7
, na przykład?Odpowiedzi:
05AB1E , 19 bajtów
Wypróbuj online!
Wyjaśnienie
Bardzo nieefektywne. Łącze TIO wykonuje
ceil(l^(1/7))
iteracje zamiastl
iteracji używanych w wersji golfowej, aby łatwiej testować duże przypadki testowe.źródło
$L7ׂ˜
- próbował uzyskać 5 bajtów, nie mógł..p
lub.s
też, ale nawet te wydają się dłuższe. Przypadkowo włączyłem „odświeżanie” na stronie TIO moją przykładową implementacją zamiast uruchomić, usunąłem ją z istnienia. Myślę, że było 26.Galaretka ,
21201918 bajtówZauważ, że wyjście nie pasuje do OP. Zostawiłem komentarz.
Wypróbuj online!
Jak to działa
źródło
Python 2 ,
116113109 bajtówZauważ, że TIO nie ma wystarczającej ilości pamięci dla ostatniego przypadku testowego.
Wypróbuj online!
źródło
JavaScript (ES6),
103101 bajtówPobiera dane wejściowe w składni curry
(n)(l)
.Przypadki testowe
Wykonanie ostatniego przypadku testowego może potrwać kilka sekund.
Pokaż fragment kodu
źródło
PHP, 142 bajtów
-5 Usuwanie
$r=[];
i zastępowanie bajtówsort($r);
z@sort($r);
Wersja online
Rozszerzony
Funkcja rekurencyjna wykonuje wszystkie permutacje, w tym limit
PHP, 145 bajtów
Rozszerzony
pętla do momentu włączenia limitu sprawdza każdą wartość podzielną przez 49
Wersja online
kilka bajtów więcej i można utworzyć tablicę asocjacyjną, kluczując liczbę i jako wartość tablicę używanych siódemek
Wersja online
źródło
while($c=$t*$v[+$i++])$l<$c?f($c)&$r[$c]=$c;
oszczędza 3 bajty; ale powinno być$l<=$c
.$r?sort($r)&print_r($r):0;
zamiast$r=[];
ratuje jeden.$z.=7;
jest o 5 bajtów krótszy niż$z=$z*10+7;
.@
jest o kolejne 4 bajty krótszy niż$r?...:0;
. (Dzięki @Christoph)$l<=$c
? Wydaje się, że wczoraj nie był mój dzień dla$z.=7
dodatkowych 2 bajtów, które znalazłem. Zastanawiam się nad twoimi dwoma pozostałymi sugestiami. Brakuje Ci:
pętli whilethat are less than l
, w swoich przykładach oneare less than or equal
. W zależności od wyjaśnienia,$c>$l||...
/$c>$l?:...
lub$c<$l&&...
są najkrótsze.Rubin,
8986 bajtówRozwiązanie rekurencyjne.
-3 bajty, pamiętając, że cokolwiek razy 0 to 0.
Wypróbuj online!
źródło
Pyth , 22 bajty
Wypróbuj online!
Okular
l[newline]n
array containing the sorted result
źródło
PHP,
128 125 130 129 127123 bajtówbędzie działać do 22
7
sekund, ale zaokrągli większe wartości (7 ** 23 jest zmiennoprzecinkowe na komputerze 64-bitowym).3 bajty zapisane przez Jörga, 3 przeze mnie,
5 41 dodane, aby uniknąć ostrzeżenia o pustych wynikach.pobiera dane wejściowe z argumentów wiersza poleceń; uruchom
-nr
lub wypróbuj online .awaria
źródło
for([,$c,$z]=$argv,$n=1+$c;$c<$z;
zamiastfor($n=1+$c=$argv[1];$c<$z=$argv[2];
@
zamiast$r&&
tłumić ostrzeżenie?$p<$z&&$r[$p]=$p
$p>$z?:$r[$p]=$p
z przykładu,n=1, l=343
który jasnol
należy uwzględnić. Dlatego nie ma tam żadnych oszczędności podczas używania$p>$z||$r[$p]=$p
lub$p>$z?:$r[$p]=$p
.@
; będzie edytować, gdy OP odpowie.$p>$z||
czy$p<$z&&
. Pozostanę przy opisie.Brachylog , 28 bajtów
Tutaj jest wiele możliwości ulepszenia samego języka; całkiem sporo rzeczy, które napisałem, wyglądają, jakby można je było poprawić po wprowadzeniu pewnych zmian w projekcie języka. To najkrótszy sposób, jaki znalazłem w obecnej wersji. Mogę przedstawić kilka sugestii dotyczących Brachylog, dzięki którym ten program byłby bardziej wydajny, krótszy i bardziej czytelny.
Bardzo, bardzo wolny; TIO przekracza limit czasu nawet na najprostszą możliwą nietrywialną odpowiedź, więc nie ma sensu udostępniać łącza TIO. Ten program zweryfikowałem, uruchamiając go lokalnie.
Jest to funkcja (nie pełny program), której wyjściem jest generator (w przeciwieństwie do listy). Dodaj
.w⊥
na końcu funkcji, jeśli chcesz zobaczyć wszystkie wyjścia, a nie tylko pierwsze. (Zauważ, że tak naprawdę nie ma to znaczenia w praktyce, ponieważ ponieważ program i tak jest zbyt wolny dla TIO, musisz uruchomić go lokalnie, a lokalny interpreter Brachylog działa w REPL, co może dobrze opisać generator).Wyjaśnienie
źródło
Narzędzia Bash + GNU, 108
Wypróbuj online . Ostatnia próba TIO zajmuje około minuty. Moje wyniki są zgodne @ Dennis's.
źródło
Pyth -
57514942 bajtówSpróbuj
źródło
7
i77
dla twoich bieżących danych wejściowych.m
zamiastF
lubV
itp. (Programowanie funkcjonalne vs. kontrola wykonania); za pomocąhQ
zamiast@Q0
; za pomocąeQ
zamiast@Q1
; stosująci*hQ]7T
zamiast długiej pętli for prowadzą do wytworzenia777...7
.