Wprowadzenie
To jedna z moich ulubionych zagadek matematycznych.
Biorąc pod uwagę cyfrę (powiedzmy 3) i liczbę jej użycia (powiedzmy 5), wygeneruj 10 wyrażeń, które dają 1, 2, 3, 4, 5, 6, 7, 8, 9 i 10 używając tylko +, -, ×, ÷, ^ i √ (root) (nawiasy są dozwolone do grupowania operacji).
Na przykład:
(3^3 + 3)/(3 + 3) = (33 - 3)/(3 + 3) = 3 + 3/3 + 3/3 = 5
Zauważ, że wszystkie powyższe używają pięciu 3 i operacji matematycznych i dają wynik 5. Możesz również użyć 3 przed √, aby określić pierwiastek kostki. To samo dotyczy użycia 4 przed √ do oznaczenia czwartego katalogu głównego.
Zauważ też, że dwa 3 mogą być użyte do utworzenia 33, lub trzy 3 mogą być użyte do utworzenia 333 i tak dalej.
Wyzwanie
- Otrzymasz dwie liczby (obie od 1 do 5) jako argument funkcji, STDIN lub argument wiersza poleceń.
- Pierwsza liczba oznacza, która cyfra ma zostać użyta, a druga liczba oznacza, ile razy ta cyfra ma być użyta w wyrażeniu.
- Twój program powinien wypisać tablicę o rozmiarze 10 (lub 10 liczb oddzielonych spacją), w których każdy element wskazuje, czy wyrażenie matematyczne (przy użyciu tylko dozwolonych operatorów) wynikające z
(index + 1)
liczby jest możliwe, czy też nie, używając wartości prawda / fałsz.
Na przykład, jeśli dane wejściowe to
1 3
Wtedy wyjście powinno być
[1, 1, 1, 0, 0, 0, 0, 0, 0, 1]
ponieważ tylko 1, 2, 3 i 10 można wyrazić za pomocą trzech 1.
Wynik
- To jest golf golfowy, więc wygrywa minimalna długość kodu w bajtach.
Premia
Print-em-all [−50]
Odejmij 50 od swojego wyniku, jeśli elementy tablicy wyjściowej są równe całkowitej liczbie możliwych kombinacji, aby uzyskać (index + 1)
wartość zamiast wartości prawdziwych lub fałszywych.
Na przykład, jeśli istnieją tylko 3 możliwe kombinacje pięciu 3, które dają wynik 5, wówczas tablica wyjściowa jest czwarta wpis powinien 3.
Extreme Maths [−100]
Odejmij 100 od wyniku, jeśli elementy tablicy wyjściowej zawierają co najmniej jedno z rzeczywistych wyrażeń, które wynikają z (index + 1)
wartości.
Na przykład, za pomocą pięciu 3'S, tablica wyjściowego 4 p wpis może być (3^3 + 3)/(3 + 3)
, (33 - 3)/(3 + 3)
lub3 + 3/3 + 3/3
Przekroczony [−200]
Odejmij 200 od swojego wyniku, jeśli elementy tablicy wyjściowej zawierają wszystkie możliwe kombinacje (oddzielone przez |
). Ta premia jest dodawana do Extreme Maths premii , więc w sumie dostajesz −300.
Na przykład, za pomocą pięciu 3'S, 4 macierz wynikową w ty element powinien być(3^3 + 3)/(3 + 3)|(33 - 3)/(3 + 3)|3 + 3/3 + 3/3
Uwaga: Dowolne dwa wyrażenia, aby osiągnąć ten sam wynik, powinny być logicznie różne z innym podejściem w obu z nich.
Na przykład, aby uzyskać 5 za pomocą pięciu 3, 3 + 3/3 + 3/3
jest to samo co 3/3 + 3 + 3/3
lub 3/3 + 3/3 + 3
dlatego, że dla każdego z nich zastosowano takie samo podejście. (3^3 + 3)/(3 + 3)
i (33 - 3)/(3 + 3)
różnią się, ponieważ 30 w liczniku jest osiągane za pomocą różnych podejść.
AKTUALIZACJA : Po przejrzeniu wszystkich odpowiedzi stwierdzono, że wszystkie odpowiedzi miały niedoskonałości z powodu skrajnych przypadków jednostkowych-
i √. W związku z tym pominięcie tych przypadkowych przypadków uznano za prawidłowe, o ile chodzi o kompletność odpowiedzi.
To trudne pytanie, ale dość interesujące.
Miłej gry w golfa!
1
s?