Cel
Biorąc pod uwagę lista wejściowa 6
różnych cyfr, znajdują się 3 numery a
, b
i c
takie, które a × b = c
za
konieczności 2 cyfry, b
mający 1 cyfrę i c
posiadające 3 cyfry. W bardziej wizualny sposób program musi ułożyć te 6 cyfr w polach tego obrazu:
Jeśli istnieje więcej niż jedno rozwiązanie, możesz wypisać dowolne z nich.
Wkład
6 różnych cyfr. Możesz wziąć je w dowolny rozsądny sposób dla swojego języka.
Wydajność
Do 3 numery a
, b
i c
. Format wyjściowy jest względnie darmowy, o ile 3 liczby są rozdzielone i zawsze są drukowane w tej samej kolejności (ale niekoniecznie w kolejnościa, b, c
).
Przypadki testowe
1, 2, 3, 4, 5, 6 -> 54,3,162
2, 3, 4, 5, 6, 7 -> 57,6,342 or 52,7,364
Punktacja
Najkrótszy kod w bajtach wygrywa.
0,1,2,3,4,5
wynik wyniku13,4,052
; brak rozwiązania; lub czy jakieś zachowanie jest w porządku?Odpowiedzi:
Brachylog (2), 10 bajtów
Wypróbuj online!
Zbyt wolno, aby uruchomić się w rozsądnym czasie (interpreter Brachylog spędza dużo czasu na mnożeniu pustych ciągów, liczb 4-cyfrowych, liczb ujemnych itp. Przy użyciu bardzo wolnego narzędzia do rozwiązywania ograniczeń). Łącze TIO używa wejścia składającego się tylko z 3 cyfr (ten program może obsługiwać dane wejściowe z dowolną liczbą cyfr). Jest to funkcja, której wejście jest liczbą zawierającą wszystkie wymagane cyfry (np.
234567
) - brak duplikatów na wejściu oznacza, że zawsze możesz po prostu wstawić dowolny0
na końcu, aby uniknąć wiodącego zera - i którego wyjściem jest lista w zamówienie[b, a, c]
(np[6, 57, 342]
.).Wyjaśnienie
Więc gdzie poszedł wymóg dla grup 2, 1 i 3 cyfr? Wiemy, że na wejściu jest 6 cyfr, a grupy są posortowane. Jedynymi możliwymi rozmiarami, jakie mogą mieć, są zatem [1, 1, 4], [1, 2, 3] lub [2, 2, 2]. Pierwszy przypadek jest niemożliwy (nie można pomnożyć dwóch liczb 1-cyfrowych, aby uzyskać liczbę 4-cyfrową, ponieważ 9 × 9 to tylko 81), podobnie jak ostatni przypadek (nie można pomnożyć dwóch liczb 2-cyfrowych do daje 2-cyfrową liczbę, ponieważ nawet 10 × 10 daje 100). Zatem zwracane wartości
[b, a, c]
muszą mieć 1, 2 i 3 cyfry długości w tej kolejności, podobnie jaka
2 cyfry,b
1 cyfra ic
3 cyfry, zgodnie z żądaniem.źródło
JavaScript (ES6),
9088 bajtówPobiera dane wejściowe jako tablicę 6 cyfr. Zwraca ciąg opisujący możliwe rozwiązanie (np.
'54*3==162'
) Lub kończy działanie z błędem „zbyt dużej rekurencji”, jeśli (i tylko wtedy) nie ma rozwiązania.Jak to działa
Jest to algorytm deterministyczny.
Liczby pierwsze
P=2
iQ=3779
zostały wybrane w taki sposób, że wywołanie zwrotne sortowania(k = k * P % Q) & 2
gwarantuje wygenerowanie wszystkich 720 możliwych permutacji tablicy wejściowej w czasie. Dokładniej, wszystkie permutacje są objęte po 2798 rodzajach - co powinno mieścić się w limicie rekurencji wszystkich przeglądarek.Wstrzykujemy każdą permutację w wyrażeniu
01*2==345
poprzez mapowanie cyfr na odpowiednie wpisy w tablicy.Oceniamy to wyrażenie i wykonujemy rekurencyjne połączenia, aż będzie to prawdą.
Test
Pokaż fragment kodu
źródło
-
zamiast==
(i odwróć?:
), aby zapisać bajt.Brachylog , 17 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
05AB1E ,
1513 bajtówZaoszczędź dwa bajty dzięki Emignie !
Wykorzystuje kodowanie CP-1252 . Wypróbuj online!
Wyjaśnienie:
źródło
213S
z3L
jak kolejność nie musiał być2,1,3
według specyfikacji.£
kumulatywnie wektoryzuje ... Jeśli to właściwy sposób, aby to powiedzieć.Bash + coreutils, 70
Nie ma szczególnie łatwego sposobu na wygenerowanie wszystkich permutacji. Zamiast tego losowo generuj permutacje i obliczaj, aż znajdziemy dobrą.
Dane wyjściowe mają postać
A*B-C
- tzn. Wyrażenie, które będzie oceniać na zero, gdy będziemy mieć prawidłową permutację.Wypróbuj online .
źródło
CJam , 23 bajty
Wypróbuj online!
źródło
Python 2 , 105 bajtów
Wypróbuj online!
Rozwiązanie 88 bajtów z bardziej elastycznym wyjściem
Wypróbuj online!
gdzie wynikiem byłoby [„6”, „5”, „7”, „3”, „4”, „2”] zamiast „6”, „57”, „342”
źródło
import
na szczycie ... potrząsa głowąf=
nagłówek. To nie jest wielka sprawa.PHP, 110 bajtów
Dotrze tam ... w końcu ...
Nie golfowany:
źródło
PHP, 77 bajtów
Pobiera dane wejściowe jako ciąg.
źródło
ES6 (JavaScript),
85,82, 79 bajtówAkceptuje tablicę cyfr (ciągów znaków), zwraca tablicę 3-elementową
[A,B,C]
=>C=A*B
Grał w golfa
EDYCJE:
d
ia
pozbywając się==
(Dzięki @Arnauld!)Spróbuj !
źródło
Pip , 18 bajtów
17 bajtów kodu, +1 dla
-S
flagi.Pobiera dane wejściowe jako ciąg cyfr za pomocą argumentu wiersza polecenia. Dane wyjściowe są w kolejności c, b, a.Wypróbuj online!
Ten kod wyświetla wszystkie rozwiązania, jeśli istnieje wiele. Jeśli wymagane jest wyprowadzenie tylko jednego rozwiązania, dodaj trzy bajty i zawiń program
(...0)
.Wyjaśnienie
źródło
Rubinowy, 60 bajtów
Drukuje wszystkie rozwiązania jako „a * b == c”
Przykład:
źródło
Partia, 305 bajtów
Pobiera dane wejściowe STDIN jako ciąg znaków
[1-9]{6}
i wyświetla wszystkie rozwiązania wdd*d-ddd
formacie. Batch nie jest zbyt dobry w manipulowaniu ciągami, więc generowanie permutacji 720 jest trochę niewygodne.źródło