Zaczynając od dodatniej liczby całkowitej N , znajdź najmniejszą liczbę całkowitą N ', którą można obliczyć, wielokrotnie dzieląc N przez jedną z jej cyfr (w podstawie-10). Każda wybrana cyfra musi być dzielnikiem N większym niż 1 .
Przykład 1
Oczekiwany wynik dla N = 230 to N '= 23 :
Przykład nr 2
Oczekiwany wynik dla N = 129528 to N '= 257 :
Uważaj na nieoptymalne ścieżki!
Moglibyśmy zacząć od 129528/9 = 14392 , ale nie prowadziłoby to do najmniejszego możliwego wyniku. Najlepsze, co możemy zrobić, jeśli najpierw podzielimy przez 9, to:
Zasady
- Dane wejściowe można przyjmować w dowolnym rozsądnym formacie (liczba całkowita, ciąg, tablica cyfr, ...).
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach!
Przypadki testowe
1 --> 1
7 --> 1
10 --> 10
24 --> 1
230 --> 23
234 --> 78
10800 --> 1
10801 --> 10801
50976 --> 118
129500 --> 37
129528 --> 257
8377128 --> 38783
655294464 --> 1111
code-golf
integer
optimization
division
Arnauld
źródło
źródło
Odpowiedzi:
Haskell ,
6761 bajtówWypróbuj online!
Wyjaśnienie:
read.pure<$>show n
przekształca całkowitą liczbę wejściowąn
w listę cyfr.d
z tej listy sprawdzamyd>1
imod n d<1
, czy tod
dzielin
.n
przezd
i rekurencyjnie zastosowanief
:f$div n d
.n
.n
do niej i zwracamyminimum
listę.źródło
Galaretka , 8 bajtów
Wypróbuj online!
Alternatywna wersja, znacznie szybsza, 9 bajtów
Wypróbuj online!
Jak to działa
źródło
Python 2 , 59 bajtów
Wypróbuj online!
źródło
Rubin ,
5247 bajtówRywalizacja o grupę języków nieegzotycznych! (Uwaga: dobrym pomysłem, jeśli nie golfem, jest dodanie
.uniq
później,.digits
ponieważ wszystkie podobne gałęzie mają podobne wyniki)Wypróbuj online!
Wyjaśnienie
źródło
x<2|n%x?n:f[n/x]
zapisać dwa lub trzy bajty (w zależności od tego, czy potrzebujesz jednego|
czy dwóch)?value%zero
jak dzielenie przez zero, więc zwarcie nie zadziała. Ponadto0
jest prawdziwą wartością w rubinie (jedynymi wartościami falsey są fałsz i zero).||
s?>0
, ale wtedy jest to ta sama liczba znaków.0
pochodzi, jeśli nie używasz|
?Common Lisp , 136 bajtów
Wypróbuj online!
Wersja do odczytu:
źródło
Galaretka , 21 bajtów
Wypróbuj online!
źródło
Wolfram Language (Mathematica) , 44 bajty
-7 bajtów dzięki Misze Ławrow.
Wypróbuj online!
źródło
⋂
postaciIntersection
. Ale są duże przypadki, których nie może już obsłużyć, ponieważ kończy się generowanie pamięciRange[#-1]
.Most@Divisors@#
zamiast,Range[#-1]
aby uniknąć problemu z pamięcią, ale wynik to 49 bajtów .JavaScript (Firefox 30-57), 49 bajtów
Wersja kompatybilna z ES6, 52 bajty:
Początkowo próbowałem odfiltrować niepotrzebne cyfry, ale okazało się, że są nieco dłuższe przy 54 bajtach:
źródło
Kotlin ,
10099 bajtówUpiększony
Test
Edycje
źródło
Galaretka , 15 bajtów
Wypróbuj online!
Muszę przyznać, że
߀
część została zapożyczona z odpowiedzi Erika . Reszta jest opracowywana osobno, częściowo dlatego, że nawet nie rozumiem, jak reszta tej odpowiedzi i tak działa: P.Jak to działa?
* Jestem mile zaskoczony, że
¡
tak działa na listach, ponieważ jego normalne znaczenie stosuje się n razy .Po tym, jak Dennis wyjaśnił, dlaczego
߀
nie potrzebuje warunkowego, mamy tę 12-bajtową lub jego 8-bajtową wersję: P.źródło
R ,
10198 bajtówWypróbuj online!
Tona bajtów idzie na wyodrębnianie cyfr, a które dzielą
x
; być może konieczne jest inne podejście.źródło
Excel Vba, 153 bajty
Pierwszy w historii golf golfowy w jedynym znanym mi języku :( Niezbyt przyjazny golfowi ...
Zadzwoń tak:
Nie mam pojęcia, gdzie to sprawdzić online.
źródło
And N > 0
zN = S
dnia poprzedniego wiersza. (Ponadto, gdybym miał sposób to przetestować, moim pierwszym instynktem byłoby sprawdzenie, czy którekolwiek ze spacji można usunąć.)APL (Dyalog) , 33 bajty
Wypróbuj online!
W jaki sposób?
⍎¨⍕⍵
- chwyć cyfryn
1~⍨
- z wyłączeniem1
so/⍨
- Filtruj według0=⍵|⍨o
- podzielnośćn
przez cyfrę⍬≡...:⍵
- jeśli pusty, wróćn
⌊/
- w przeciwnym razie zwróć minimum∇¨
- rekurencja dla każdej liczby w⍵÷d
- podziałn
według każdej z cyfr odfiltrowanych powyżejźródło
Perl 5, 87 + 1 (
-p
) = 88 bajtówspróbuj online
źródło
PHP, 120 bajtów
Wypróbuj online!
źródło
Pari / GP , 49 bajtów
Wypróbuj online!
źródło