Napisz program lub funkcję, która przyjmuje dodatnią liczbę całkowitą. Możesz założyć, że dane wejściowe są prawidłowe i możesz je traktować jako ciąg. Jeśli liczba jest dowolna z
123
234
345
456
567
678
789
następnie wypisz prawdziwą wartość. W przeciwnym razie wypisz wartość fałszowania . Na przykład dane wejściowe
1
2
3
12
122
124
132
321
457
777
890
900
1011
1230
1234
wszystkie muszą skutkować wynikiem fałszowania. (Dane wejściowe nie będą miały zer wiodących, więc nie musisz się martwić takimi rzeczami 012
.)
Najkrótszy kod w bajtach wygrywa.
code-golf
number
decision-problem
integer
Hobby Calvina
źródło
źródło
012
?012
byłoby fałszem, ale możesz założyć, że nie jest wprowadzane.Odpowiedzi:
Python, 24 bajty
Anonimowa funkcja, która wyprowadza 0 lub 1. Tworzy listę
[123, 234, 345, 456, 567, 678, 789]
i zlicza, ile razy pojawi się wejście.źródło
Python, 24 bajty
Po prostu wiele łańcuchów warunków.
źródło
lambda
, nie zgadłbym nawet, że to Python. To okropne.Haskell, 22 bajty
Anonimowa funkcja. Generuje listę o równych odstępach
[123, 234, 345, 456, 567, 678, 789]
i sprawdza, czy dane wejściowe są elementem.źródło
Brachylog , 9 bajtów
Wypróbuj online! lub Zweryfikuj wszystkie przypadki testowe.
Kredyty dla Dennisa za algorytm .
W języku angielskim „(udowodnij, że) pierwsza cyfra wejścia, połączona ze sobą dwa razy, dodaj 12, wciąż jest wejściem”.
źródło
Python 2, 25 bajtów
Przetestuj na Ideone .
źródło
Brain-Flak 76 + 3 = 79 bajtów
Ta odpowiedź jest golfem tej odpowiedzi. Właściwie nie wiem dokładnie, jak działa moja odpowiedź, ale DJMcMayhem daje dobre wyjaśnienie w swojej oryginalnej odpowiedzi, a moja odpowiedź jest modyfikacją jego.
Jest uruchamiany z flagą -a ascii, która dodaje 3 bajty.
Wyjaśnienie (swego rodzaju)
Począwszy od oryginalnego działającego rozwiązania:
Przeprowadzam to przez prosty algorytm golfowy, który napisałem i otrzymuję:
Stąd widzę sekcję, która
<({}[()()()])>{}
zasadniczo mnoży się przez jedną, co sprawia, że równa się{}[()()()]
zmniejszeniu całego kodu do:Wreszcie negatywy można łączyć:
źródło
Brainfuck, 32 bajty
Wypróbuj online!
Kredyty dla Lynn za rdzeń algorytmu.
źródło
Galaretka , 6 bajtów
Wypróbuj online! lub zweryfikuj wszystkie przypadki testowe .
Jak to działa
źródło
ast.literal_eval
to,012
nie reprezentuje liczby całkowitej .05AB1E , 5 bajtów
Wyjaśnienie
Wypróbuj online
źródło
2Å1
zamiastXX,
, tylko do cholery mniej poleceń (4 zamiast 5).Å
jest zapisywalny na mojej klawiaturze (w przeciwieństwie do‚
) co jest zaletą :)‚
(nie,
użyłem) nie ma też sekwencji klawiszy komponowania, podczas gdyÅ
jestoA
na klawiaturze en-US.MATL , 8 bajtów
Wypróbuj online!
To zostanie wydrukowane
1 1
dla prawdziwych danych wejściowych i tablicy z0
nią dla wartości fałszowania, ponieważ jest to fałsz w MATL.Wyjaśnienie:
źródło
d1=Ep4=
(nie testowałem dokładnie)dTTX=
za 5 bajtówT
T
is the literaltrue
, andF
isfalse
. NeighbouringT
andF
stick together, soTT
is[true true]
, which for these purposes is equivalent to[1 1]
. See section 4.3 of the specJava 7, 46 bytes
After trying several things with Leaky Nun in chat, this seems to be the shortest. Sometimes you just have to do things the straightforward way :/
Explanation:
źródło
Perl 6,
35 29 24 2119 bytesExplanation:
Usage:
źródło
Retina, 26
Outputs 1 for truthy and 0 for falsey.
Try it online (First line added to allow multiple testcases to be run).
źródło
Ruby,
323025 + 2 = 27 bytes+2 bytes for
-nl
flags.Takes input on STDIN and prints
true
orfalse
.See it on repl.it: https://repl.it/DBn2/2 (Click on ▶️ and then type input into the console below.)
źródło
-a
does asplit
, notchop
? Also, what does the&
do? I'm using an older Ruby which throws an error. Anyway, it works perfectly at 26 bytes without it.-l
, not-a
.&.
is the "safe navigation" operator, added in Ruby 2.3. Without it inputs like19
, which aren't substrings if"123456789"
, will raise a NoMethodError.Brain-Flak, 99 bytes
Try it online!
This is 98 bytes of code
+1
for the-a
flag.This prints
1
for truthy, and either0
or nothing (which is equivalent to 0) for falsyźródło
...)({}
but vary. If you push and pop without using the value you can condense it into one thing. I can link you to a version of your code with all of these golfed out if you want.Brain-Flak, 114 bytes
Try it online!
Correct version (in the spirit of the question): takes the integer as input, output 0 for falsey and 1 for truthy.
This is not stack clean.
Algorithm
Let the input be
n
.The output is truthy iff
(n-123)(n-234)(n-345)(n-456)(n-567)(n-678)(n-789)=0
.I computed those seven numbers by first subtracting 12 and then subtract 111 7 times, and then computed the logical double-NOT of those seven numbers and added them up.
For truthy results, the sum is 6; for falsey results, the sum is 7.
Then, I subtract the sum from 7 and output the answer.
źródło
R,
3022 bytesNot particularly exciting; check if input is in the sequence given by 12 + 111k, where k is each of 1 to 7. Note that
:
precedes*
so the multiplication happens after the sequence is generated.źródło
C# (Visual C# Interactive Compiler),
41 3023 bytesFirst code-golf submission, be gentle :)
Try it online!
źródło
return
keyword: 30 bytesBrainfuck, 43 bytes
Bah, I'm no good at this. Outputs
\x01
if the output is one of the strings123
,234
, …,789
; outputs\x00
otherwise.(I beat Java 7, though…)
Try it online!
źródło
[>>]<
? Couldn't that just be>
?JavaScript ES6, 26 bytes
n=>1>(n-12)%111&n>99&n<790
This takes advantage of the fact that I'm using bit-wise logic operators on what are essentially booleans (which are bit-based!)
Thanks to Titus for saving 2.
źródło
(n-12)
andn>99
Excel -
62573531 bytesBased on Anastasiya-Romanova's answer, but returning Excel's
TRUE/FALSE
values.Further, we can get to
since both
RIGHT
andLEFT
return a single character by default.And, inspired by some of the Python solutions:
Thanks to Neil for 4 more bytes...
źródło
N<900
save you a byte, in which case you can also useN>99
instead ofLEN(N)=3
.=REPT(LEFT(N),3)+12=N
whereN
is the name of the reference cell.Brachylog (2), 7 bytes
Try it online!
Explanation
As a full program, we get a truthy return if all assertions hold, a falsey return if any fail.
źródło
CJam,
139 bytesTry it online!
Explanation
źródło
2345
Excel - 104 bytes
Explanation:
The syntax for the IF formula in Excel is:
If the length of input
N
, where it's a name of the reference cell, is less than 3, then it will return Falsy. Else, if the length of inputN
is 3 and both of the difference of second digit and first digit and the difference of third digit and second digit are equal to 1, then it will return Truthy.źródło
=REPT(LEFT(N),3)+12=N
whereN
is the name of the reference cell.Dyalog APL, 10 bytes
Takes string argument.
1 1≡
Is {1, 1} identical to¯2-/
the reversed pair-wise difference of⍎¨
each character taken as a number?TryAPL online! (
⍎
has been emulated withe
for security reasons.)źródło
Perl, 18 bytes
Includes +1 for
-p
Run with the input on STDIN
123.pl
:źródło
PHP, 31 bytes
Check if first digit of (number minus 12) is multiple of 111
źródło
PowerShell v3+, 24 bytes
Uses the same "multiple of 111 plus 12" trick as some other answers, but goes the other direction. Takes input
$args[0]
, subtracts12
, divides by111
, and checks whether that's-in
the range1..7
. Outputs a Boolean true/false value. Requires v3+ for the-in
operator.Test Cases
źródło
ARM Machine Code, 18 bytes
Hex dump (little endian):
This is a function that takes in a length, pointer pair for the string. The output is bash-style, it outputs 0 for true and a non-zero value for false. In C the function would be declared int oneTwoThree(size_t length, char* string). The instruction encoding is thumb-2, which has 2 and 4 byte instructions. Tested on a Raspberry Pi 3.
Ungolfed assembly:
Testing script (also assembly):
źródło
JavaScript (ES6), 34 bytes
And one more option in JS. Takes input as a string and outputs
0
forfalse
and1
fortrue
.See my other solutions here and here
Try it
źródło