Ostatnio moja reputacja była 25,121
. Zauważyłem, że każda grupa cyfr (tzn. Liczby oddzielone przecinkami) to idealny kwadrat.
Twoim wyzwaniem jest, biorąc pod uwagę nieujemną liczbę całkowitą N i jednoargumentową funkcję logiczną Black Box f : Z * → B , uzyskaj prawdziwą wartość, jeśli każda wartość f zastosowana do grup cyfr N jest prawdziwa, a falsey w przeciwnym razie.
Grupowanie cyfr można znaleźć, dzieląc liczbę na grupy po 3, zaczynając od prawej strony. Grupa najbardziej na lewo może mieć 1, 2 lub 3 cyfry. Kilka przykładów:
12398123 -> 12,398,123 (3 digit groupings)
10 -> 10 (1 digit grouping)
23045 -> 23,045 (2 digit groupings)
100000001 -> 100,000,001 (3 digit groupings)
1337 -> 1,337 (2 digit groupings)
0 -> 0 (1 digit grouping)
Dodatkowe zasady
- Ta funkcja może być przypisana do obu booleanów (np.
true
Ifalse
),1
s i0
s, albo na dowolną wartość truey / falsey. Proszę określić, które formaty są obsługiwane przez twoją odpowiedź. - Możesz wziąć liczbę całkowitą jako dane wejściowe lub ciąg liczb całkowitych (tj. Ciąg złożony z cyfr).
- Możesz napisać program lub funkcję.
- Przesyłając grupy cyfrowe do funkcji f , powinieneś wyciąć wszystkie niepotrzebne zera wiodące. Np. F , gdy zastosowane do N = 123 000, należy wykonać jako f (123) if (0).
Przypadki testowe
Oznaczenie funkcji to n -> f(n)
np n -> n == 0
. Wszyscy operatorzy przyjmują arytmetykę liczb całkowitych. (Np. sqrt(3) == 1
)
function f
integer N
boolean result
n -> n == n
1230192
true
n -> n != n
42
false
n -> n > 400
420000
false
n -> n > 0
0
false
n -> n -> 0
1
true
n -> sqrt(n) ** 2 == n
25121
true
n -> sqrt(n) ** 2 == n
4101
false
n -> mod(n, 2) == 0
2902414
true
n -> n % 10 > max(digits(n / 10))
10239120
false
n -> n % 10 > max(digits(n / 10))
123456789
true
code-golf
number
decision-problem
functional-programming
Conor O'Brien
źródło
źródło
n -> n > 0
zastosować0
) do przypadków testowych, ponieważ większość odpowiedzi na nich się nie powiedzie.[0]
.Odpowiedzi:
Galaretka , 5 bajtów
Wypróbuj online!
Argumentem wiersza polecenia jest liczba. Linia powyżej linii, w której znajduje się ta funkcja, jest główną linią reszty programu, to znaczy kodem wywoływanym dla każdej z grup. Uważaj, aby nie odwoływać się do linii
bȷÇ€Ạ
! Przykładem tutaj jest piąty przypadek testowy.źródło
n -> n != 0
do0
0
, a jej lista grup cyfr jest[0]
, więc następnieṆ
jest mapowany do każdego elementu (0
tutaj pojedynczego ), zamieniając listę na[1]
i, ponieważ wszystkie elementy tej listy są zgodne z prawdą,1
jest zwracana. Zauważ, że gdybym[]
zamiast tego miał listę cyfr cyfr, wynik nie zmieniłby się, ponieważ wszystkie elementy[]
są prawdziwe (próżna prawda). Jednak wyniki mogą być różne dla różnych programów, a zasady nie są do końca jasne w tej sprawie ( zapytany PO ).Brachylog, 8 bytes
Try it online!
The blackbox function goes on the second line (or the "Footer" on TIO) and the integer is read from STDIN. Prints
true.
orfalse.
accordingly.źródło
APL (Dyalog),
1613 bytes3 bytes saved thanks to @Adám
Try it online!
How?
1e3⊥⍣¯1⊢⎕
- input the number and encode in base 1000⎕¨
- input the function and apply on each∧/
- reduce with logical andźródło
Python 2, 46 bytes
Try it online!
źródło
*
in place ofand
.Haskell,
424038 bytesThe blackbox function must return
True
orFalse
.Try it online!
Edit:
-2-4 bytes thanks to @ovs.źródło
&&
instead ofand
C (gcc),
665848 bytes-10 bytes thanks to @Neil!
Try it online!
źródło
g(f,i)int f();{i=!i||f(i%1000)&&g(f,i/1000);}
f(n){return n > n;}
to0
Wolfram Language (Mathematica), 30 bytes
Try it online!
źródło
JavaScript (ES6),
4036 bytesTakes the function and value by currying and returns 0 or 1. Edit: Saved 4 bytes thanks to @Shaggy.
źródło
1000
->1e3
to save a couple of bytes. And could you replace&&
with&
for another byte?function_name(n=>n>0)(0)
(returnstrue
)Pyth, 9 bytes
Try it online! (uses the third test case)
Assumes the black-box function is named
y
. You can declare such a function usingL
(argument:b
), as shown on TIO. I will implement all the test cases later, if I have time.źródło
Stax, 8 bytes
Stax programs do not have function calls or arguments, so we store a block in the
Y
register that consumes and produces a single value. This can be done before the program code.Here's an example using the perfect square function.
źródło
Clean, 54 bytes
Try it online!
Defines the function
$ :: Int -> Bool
, expecting a functionf :: Int -> Bool
to be defined elsewhere.źródło
n -> n > 0
to0
Java (OpenJDK 9), 94 bytes
Try it online!
źródło
n -> n > 0
to0
Common Lisp,
7372 bytesTry it online!
źródło
05AB1E, 8 bytes
Try it online!
Explanation
Takes the number as the first line of input and the function as the second.
Outputs 1 for truthy and 0 for falsy.
źródło
Q
andÊ
though. I'll revert back to the 8-byte version..V
that vectorizes, it doesn't even take the list as an argument itself to begin with..V
vectorizes. In the example in my link it'sÈ
.Q
andÊ
would work with vectorization unlike I previously stated, but using automatic vectorization would make these commands map on the whole list which feels outside the spirit of the challenge so we needε
.Excel VBA, 79 bytes
An anonymous VBE immediate window function that takes input,
n
as type integer from range[A1]
, and the name of a publically defined VBA function from range[B1]
.Usage example
In a public module, the input function, in this case
f()
is defined.The input variables are set.
The immediate window function is then called.
źródło
Ruby, 37 bytes
Try it online!
A recursive lambda, taking function and integer and returning boolean.
36 bytes (only positive n)
This version returns
1
for truthy,false
for falsey. Unfortunately it can fail whenn = 0
Try it online!
źródło
g=
if it's recursive1
as the truthy valueg[->n{n>0},0]
(returnstrue
). It only fails if the input is0
but the question says "non-negative" so you should go back to 37. sorryAppleseed, 51 bytes
Anonymous lambda function that takes a number and a function and returns a boolean value.
Try it online!
źródło
Add++, 15 bytes
Try it online!
Requires a function
f
to be declared in the TIO header.How it works
źródło