Sono divisibile per il doppio della somma delle mie cifre?


40

Dato un numero intero positivo come input, il tuo compito è produrre un valore di verità se il numero è divisibile per il doppio della somma delle sue cifre e un valore di falsa in caso contrario ( OEIS A134516 ). In altre parole:

(sum_of_digits)*2 | number
  • Invece di valori di verità / falsità per i casi vero e falso, puoi invece specificare qualsiasi insieme finito di valori per il caso vero / falso, e il loro complemento agli altri valori. Per un semplice esempio, puoi usare 0il caso vero e tutti gli altri numeri per il caso falso (o viceversa, se lo desideri).

  • Si applicano le regole standard di input e output. Si applicano anche le lacune predefinite.

  • È possibile accettare input come numero intero o come rappresentazione di stringa di quel numero intero.

  • Questo è , quindi vince il codice più breve in byte!

  • Sono nuovo di PPCG, quindi vorrei che tu fornissi una spiegazione, se possibile.


Casi test

Ingresso - Uscita - (motivo)

80 - Verità - (16 divide 80)
100 - Verità - (2 divide 100)
60 - Verità - (12 divide 60)
18 - Verità - (18 divide 18)
12 - Verità - (6 divide 12)

4 - Falsy - (8 non divide 4)
8 - Falsy - (16 non divide 8)
16 - Falsy - (14 non divide 16)
21 - Falsy - (6 non divide 21)
78 - Falsy - (30 non divide 78)
110 - Falsy - (4 non fa schifo 110)
111 - Falsy - (6 non divide 111)
390 - Falsy - (24 non divide 390)

Bella sfida, benvenuto in PPCG!
Skidsdev,

@Mayube Grazie, è la mia seconda sfida, ma la prima è stata chiusa: P

Siamo autorizzati a prendere le cifre come un elenco di numeri interi?
Henry,

4
@Henry No, sarebbe troppo banale

1
In effetti, le due frasi di "Invece di valori di verità / falsità per i casi veri e falsi, puoi invece specificare qualsiasi insieme finito di valori per il caso vero e il loro complemento per quelli falsi. Per un semplice esempio, puoi usare 0 per il caso vero e tutti gli altri numeri per il caso falso (o viceversa, se preferisci) "sembrano contraddirsi a vicenda (in particolare," finito "e" o viceversa ").
Greg Martin,

Risposte:


7

Neim , 3 byte

𝐬ᚫ𝕞

Spiegazione:

𝐬      Implicitly convert to int array and sum the digits
 ᚫ     Double
  𝕞   Is it a divisor of the input?

Provalo online!

Versione dettagliata


Umm ... dovresti controllare se l'input è un multiplo del doppio della somma delle cifre, non viceversa.
Erik the Outgolfer,

@EriktheOutgolfer Cosa intendi? Controllo se l'input è un multiplo del doppio della somma delle cifre. Forse non l'ho spiegato correttamente.
Okx,

4
Neim ha bisogno di diventare ancora più golfista - quando gli invii diventano troppo lunghi, il mio browser inizia a perdere tempo.
Esolanging Fruit

1
@ Challenger5 Mi scuso sinceramente per la mancanza di golfismo. Ci riproverò la prossima volta. Ancora una volta, mi dispiace per quello.
Okx,

@Okx E mi scuso sinceramente per essere troppo pigro per trovare una risposta Neim che fosse una migliore dimostrazione di ciò di cui stavo parlando.
Esolanging Fruit l'

16

JavaScript (ES6), 31 29 27 byte

Accetta l'input come stringa. Restituisce zero per verità e diverso da zero per falsità.

n=>n%eval([...n+n].join`+`)

Commentate

n => n % eval([...n + n].join`+`)
n =>                                   // take input string n  -> e.g. "80"
                  n + n                // double the input     -> "8080"
              [...     ]               // split                -> ["8", "0", "8", "0"]
                        .join`+`       // join with '+'        -> "8+0+8+0"
         eval(                  )      // evaluate as JS       -> 16
     n %                               // compute n % result   -> 80 % 16 -> 0

Casi test


Non ho mai visto il metodo [... x] di dividere prima, c'è un nome specifico per questo?
Jacob Persi,

@JacobPersi Questo è l' operatore di diffusione .
Arnauld,

7

C #, 46 byte

using System.Linq;n=>n%(n+"").Sum(c=>c-48)*2<1

Versione completa / formattata:

using System;
using System.Linq;

class P
{
    static void Main()
    {
        Func<int, bool> f = n => n % (n + "").Sum(c => c - 48) * 2 < 1;

        Console.WriteLine(f(80));
        Console.WriteLine(f(100));
        Console.WriteLine(f(60));

        Console.WriteLine();

        Console.WriteLine(f(16));
        Console.WriteLine(f(78));
        Console.WriteLine(f(390));

        Console.ReadLine();
    }
}

4

Retina , 38 27 byte

-11 byte e risolto un errore con il codice grazie a @MartinEnder

$
$_¶$_
.+$|.
$*
^(.+)¶\1+$

Provalo online!

Stampa 1 se divisibile, 0 altrimenti

Spiegazione (spero di aver capito bene)

$
$_¶$_

Aggiunge l'intero input, più una nuova riga, più l'input di nuovo

.+$|.
$*

Converte ogni corrispondenza in unaria (o l'intera seconda riga che è l'input originale o ogni cifra nella prima riga)

^(.+)¶\1+$

Controlla se la prima riga (la somma delle cifre raddoppiata) è un divisore della seconda riga


4

MATL , 7 byte

tV!UsE\

Uscite 0 se divisibile, intero positivo altrimenti. In particolare, genera il resto della divisione del numero per il doppio della somma delle sue cifre.

Provalo online!

Spiegazione

t   % Implicit input. Duplicate
V!U % Convert to string, transpose, convert to number: gives column vector of digits
s   % Sum
E   % Times 2
\   % Modulus. Implicit display

4

05AB1E , 5 4 byte

-1 byte grazie a Okx

SO·Ö

Provalo online!

Puoi anche rimuovere l'ultimo Ö per ottenere 0 per la verità e qualcos'altro per la falsità risultante in soli 3 byte, ma per me che non sembra adattarsi in modo appropriato alla definizione.

Spiegazione

SO·Ö
SO    # Separate the digits and sum them
  ·   # Multiply the result by two
   Ö  # Is the input divisible by the result?

Puoi giocare a golf a 4 byte sostituendolo %_con Ö.
Okx,

4

x86-64 Codice macchina, 24 byte

6A 0A 5E 31 C9 89 F8 99 F7 F6 01 D1 85 C0 75 F7 8D 04 09 99 F7 F7 92 C3

Il codice precedente definisce una funzione nel codice macchina x86 a 64 bit che determina se il valore di input è divisibile per il doppio della somma delle sue cifre. La funzione è conforme alla convenzione di chiamata AMD64 di System V, quindi è richiamabile praticamente da qualsiasi linguaggio, proprio come se fosse una funzione C.

Prende un singolo parametro come input tramite il EDIregistro, secondo la convenzione di chiamata, che è l'intero da testare. (Si presume che sia un numero intero positivo , coerente con le regole della sfida, ed è richiesto per ilCDQ corretto funzionamento istruzioni che utilizziamo.)

Restituisce il suo risultato nel EAXregistro, di nuovo, secondo la convenzione di chiamata. Il risultato sarà 0 se il valore di input era divisibile per la somma delle sue cifre e diverso da zero in caso contrario. (Fondamentalmente, un booleano inverso, esattamente come nell'esempio fornito nelle regole della sfida.)

Il suo prototipo C sarebbe:

int DivisibleByDoubleSumOfDigits(int value);

Ecco le istruzioni per il linguaggio dell'assemblea non golfate, annotate con una breve spiegazione dello scopo di ciascuna istruzione:

; EDI == input value
DivisibleByDoubleSumOfDigits:
   push 10
   pop  rsi             ; ESI <= 10
   xor  ecx, ecx        ; ECX <= 0
   mov  eax, edi        ; EAX <= EDI (make copy of input)

SumDigits:
   cdq                  ; EDX <= 0
   div  esi             ; EDX:EAX / 10
   add  ecx, edx        ; ECX += remainder (EDX)
   test eax, eax
   jnz  SumDigits       ; loop while EAX != 0

   lea  eax, [rcx+rcx]  ; EAX <= (ECX * 2)
   cdq                  ; EDX <= 0
   div  edi             ; EDX:EAX / input
   xchg edx, eax        ; put remainder (EDX) in EAX
   ret                  ; return, with result in EAX

Nel primo blocco, eseguiamo un'inizializzazione preliminare dei registri:

  • PUSHLe POPistruzioni + sono usate come un modo lento ma breve per inizializzare ESIa 10. Ciò è necessario perché l' DIVistruzione su x86 richiede un operando di registro. (Non esiste una forma che si divide per un valore immediato, diciamo, di 10.)
  • XORè usato come un modo breve e veloce per cancellare il ECXregistro. Questo registro fungerà da "accumulatore" all'interno del ciclo imminente.
  • Infine, EDIviene creata e memorizzata una copia del valore di input (from ) EAX, che verrà bloccato durante il ciclo.

Quindi, iniziamo il ciclo e sommando le cifre nel valore di input. Questo si basa sull'istruzione x86 DIV, che si divide EDX:EAXper il suo operando e restituisce il quoziente in EAXe il resto in EDX. Quello che faremo qui è dividere il valore di input per 10, in modo tale che il resto sia la cifra nell'ultimo posto (che aggiungeremo al nostro registro accumulatore ECX), e il quoziente sono le cifre rimanenti.

  • L' CDQistruzione è un breve modo di impostare EDXa 0. E 'in realtà firmare-estende il valore di EAXa EDX:EAX, che è quello che DIVutilizza come dividendo. In realtà non abbiamo bisogno di estensione del segno qui, perché il valore di input non è firmato, ma CDQè 1 byte, invece di utilizzare XORper cancellare EDX, che sarebbe 2 byte.
  • Poi abbiamo DIVIDE EDX:EAXda ESI(10).
  • Il resto ( EDX) viene aggiunto all'accumulatore ( ECX).
  • Il EAXregistro (il quoziente) viene testato per vedere se è uguale a 0. In tal caso, abbiamo superato tutte le cifre e cadiamo. In caso contrario, abbiamo ancora più cifre da sommare, quindi torniamo all'inizio del ciclo.

Infine, al termine del ciclo, implementiamo number % ((sum_of_digits)*2):

  • L' LEAistruzione viene utilizzata come un modo breve per moltiplicare ECXper 2 (o, equivalentemente, aggiungere ECXa se stesso) e memorizzare il risultato in un registro diverso (in questo caso, EAX).

    (Avremmo anche potuto fare add ecx, ecx+ xchg ecx, eax; entrambi sono 3 byte, ma l' LEAistruzione è più veloce e più tipica.)

  • Quindi, facciamo di CDQnuovo un preparativo per la divisione. Perché EAXsarà positivo (cioè senza segno), questo ha l'effetto di azzerare EDX, proprio come prima.
  • La prossima è la divisione, questa volta che si divide EDX:EAXper il valore di input (una cui copia non rimossa risiede ancora EDI). Questo è equivalente a modulo, con il resto in EDX. (Viene inserito anche il quoziente EAX, ma non ne abbiamo bisogno.)
  • Infine, XCHGscambiamo i contenuti di EAXe EDX. Normalmente, faresti un MOVqui, ma XCHGè solo 1 byte (anche se più lento). PerchéEDX contiene il resto dopo la divisione, sarà 0 se il valore fosse equamente divisibile o diverso da zero in caso contrario. Pertanto, quando RETurliamo, EAX(il risultato) è 0 se il valore di input era divisibile per il doppio della somma delle sue cifre, o diverso da zero altrimenti.

Spero che questo sia sufficiente per una spiegazione.
Questa non è la voce più breve, ma ehi, sembra che batte quasi tutte le lingue non golf! :-)


3

Japt , 7 4 byte

Accetta l'input come stringa. Output 0per trueo un numero maggiore di 0for false, che, da altre soluzioni, sembrerebbero validi. In caso contrario, fammi sapere e tornerò indietro.

%²¬x

Provalo


Spiegazione

Immissione implicita della stringa U.
"390"

²

Ripeti Udue volte.
"390390"

¬

Dividi in serie di singoli personaggi.
["3","9","0","3","9","0"]

x

Riduci sommando, eseguendo automaticamente il cast di ogni carattere su un numero intero nel processo.
24

%

Ottieni il resto della divisione Uper il risultato, eseguendo automaticamente il cast Usu un numero intero nel processo. Emette implicitamente il numero intero risultante.
6 (=false)


2
Le tue spiegazioni di solito consumano molto spazio verticale, che ritengo non sia necessario. Ad ogni modo, è la tua risposta.
Okx,

@Okx; Non so quanto "normale" possa essere quando sono passato a questo formato solo un paio di giorni fa.
Shaggy,

4
Mi è piaciuto il formato di spiegazione. È stato facile da seguire, soprattutto per questo problema, poiché si trattava di una riduzione lineare e si spostava in basso nella pagina come un problema di matematica. Solo i miei due centesimi.
Henry,

3
Questo formato di spiegazione è molto meglio del solito, soprattutto per coloro che non hanno familiarità con le lingue. Vorrei che anche altri golfisti che usavano queste lingue golfistiche facessero questo.
Peter1807,

3

C89, 55 53 byte

(Grazie a Steadybox!

s,t;f(x){for(t=x,s=0;t;t/=10)s+=t%10;return x%(s*2);}

Ci vuole un singolo input x, che è il valore da testare. Restituisce 0 sex è equamente divisibile per il doppio della somma delle sue cifre, o diverso da zero in caso contrario.

Provalo online!

Ungolfed:

/* int */ s, t;
/*int */ f(/* int */ x)
{
    for (t = x, s = 0; t /* != 0 */; t /= 10)
        s += (t % 10);
    return x % (s * 2);
}

Come puoi vedere, questo sfrutta le regole implicite di C89. Le variabili globali se tsono implicitamente dichiarate comeint s. (Vengono anche implicitamente inizializzati su 0 perché sono globali, ma non possiamo trarne vantaggio se vogliamo che la funzione sia richiamabile più volte.)

Allo stesso modo, la funzione, f accetta un singolo parametro, x,che è implicitamente un inte restituisce unint .

Il codice all'interno della funzione è abbastanza semplice, sebbene il for ciclo sembrerà terribilmente strano se non si ha familiarità con la sintassi. Fondamentalmente, forun'intestazione di ciclo in C contiene tre parti:

for (initialization; loop condition; increment)

Nella sezione "inizializzazione", abbiamo inizializzato le nostre variabili globali. Questo verrà eseguito una volta, prima di inserire il loop.

Nella sezione "condizione del ciclo", abbiamo specificato su quale condizione dovrebbe continuare il ciclo. Questo dovrebbe essere ovvio.

Nella sezione "incremento", abbiamo praticamente inserito un codice arbitrario, poiché verrà eseguito alla fine di ogni ciclo.

Lo scopo più ampio del loop è quello di scorrere ogni cifra nel valore di input, aggiungendoli a s. Alla fine, dopo che il ciclo è terminato, sviene raddoppiato e preso modulo xper vedere se è uniformemente divisibile. (Una spiegazione migliore e più dettagliata della logica qui può essere trovata nella mia altra risposta , su cui si basa questa.)

Versione leggibile dall'uomo:

int f(int x)
{
    int temp = x;
    int sum  = 0;
    while (temp > 0)
    {
        sum  += temp % 10;
        temp /= 10;
    }
    return x % (sum * 2);
}

È possibile salvare due byte, se si utilizza tinvece t>0come condizione del ciclo .
Steadybox

Ah, certo! Buona cattura, @Steadybox. Non sono sicuro di quanto mi sia sfuggito, dal momento che testare contro 0 è esattamente quello che ha fatto la mia implementazione asm, su cui questa risposta era fortemente basata.
Cody Gray,



2

Python 2 , 34 32 byte

-2 byte grazie a @Rod

lambda n:n%sum(map(int,`n`)*2)<1

Provalo online!


6
basato sull'esempio di "chiaramente distinguibile" fornito nella domanda, credo che tu possa rimuovere il file <1.
Wheat Wizard

2

Mathematica, 26 byte

(2Tr@IntegerDigits@#)∣#&

Nessun indizio sul perché abbia una precedenza superiore alla moltiplicazione ...


2

PHP , 41 byte

stampa zero se divisibile, intero positivo altrimenti.

<?=$argn%(2*array_sum(str_split($argn)));

Provalo online!


Metti il ​​compito nel blocco header. Potresti anche usare $a=10, ma hai dimenticato di contare questo verso il tuo conteggio di byte
circa il

@aross perché dovrei contare l'input verso il mio conteggio byte. $argnè disponibile con l' opzione -F(in questo caso) o l' -Ropzione
Jörg Hülsermann il

Hm, interessante. Non lo sapevo -F. Ma ciò non si riflette nel tuo TIO (supporta l'eco da STDIN?).
aross

@aross funziona come il tuo approccio usa solo un file al posto del codice e l' -Fopzione invece di -R php.net/manual/en/features.commandline.options.php Se hai trovato un modo migliore per fare lo stesso in tio come nel commnd line fammi sapere
Jörg Hülsermann,

2

Excel, 63 byte

=MOD(A1,2*SUMPRODUCT(--MID(A1,ROW(OFFSET(A$1,,,LEN(A1))),1)))=0

La somma delle cifre è il bit lungo.



2

Husk, 9 8 bytes

Thanks to Leo for saving 1 byte.

Ṡ¦ȯ*2ṁis

Try it online!

Explanation

Ṡ¦ȯ         Test whether f(x) divides x, where f is the function obtained by
            composing the next 4 functions.
       s    Convert x to a string.
     ṁi     Convert each character to an integer and sum the result.
   *2       Double the result.

You can use ṁ to map and sum with a single command, saving one byte
Leo

2

Haskell, 38 37 42 bytes

Thanks to Zgarb for golfing off 1 byte

f x=read x`mod`foldr((+).(*2).read.pure)0x

Try it online!

Takes input as a string; returns 0 if divisible and nonzero otherwise.


(:[]) can be pure.
Zgarb

You will save 1 byte by replacing the lambda by function declaration
bartavelle

@bartavelle: Pretty sure it's a wash. Example?
Julian Wolf

You're right, it is the exact same length. Not sure how that crossed my mind :/
bartavelle

2

Python 3, 35 bytes

lambda a:a%(sum(map(int,str(a)))*2)

Hello and welcome to the site. You can remove some whitespace here. Particularly around = and after the ) in int(c). In addition since sum can take a generator as an argument you can remove the [..] inside it. If you have any additional questions feel free to ping me.
Wheat Wizard

int(c)for c in a could also be map(int,a), to save a few bytes.
Wheat Wizard

This doesn't work - or rather, works backwards. Easily fixed with 4 extra bytes: lambda a:not a%(sum(map(int,str(a)))*2)
osuka_

@osuka_ see bullet point one in the question description
wrymug

2

TI-BASIC, 27 26 21 bytes

-5 thanks to @Oki

:fPart(Ans/sum(2int(10fPart(Ans10^(~randIntNoRep(1,1+int(log(Ans

This is made trickier by the fact that there is no concise way to sum integer digits in TI-BASIC. Returns 0 for True, and a different number for False.

Explanation:

:fPart(Ans/sum(2int(10fPart(Ans10^(-randIntNoRep(1,1+int(log(Ans
                               10^(-randIntNoRep(1,1+int(log(Ans #Create a list of negative powers of ten, based off the length of the input, i.e. {1,0.1,0.01}
                            Ans                                  #Scalar multiply the input into the list
                    10fPart(                                     #Remove everything left of the decimal point and multiply by 10
               2int(                                             #Remove everything right of the decimal point and multiply by 2
           sum(                                                  #Sum the resulting list
       Ans/                                                      #Divide the input by the sum
:fPart(                                                          #Remove everything left of the decimal, implicit print

2
10^-randIntNoRep(1,1+int(log(Ans does the same as seq(10^(~A-1),A,0,log(Ans in fewer bytes as order doesnt matter (Assuming version 2.55MP)
Oki

1

Braingolf, 13 12 bytes

VR.Mvd&+2*c%

Try it online!

Outputs 0 for truthy, any other number for falsey.

Explanation

VR.Mvd&+2*c%  Implicit input from command-line args
VR            Create stack2, return to stack1
  .M          Duplicate input to stack2
    vd        Switch to stack2, split into digits
      &+      Sum up all digits
        2*    Double
          c   Collapse stack2 back into stack1
           %  Modulus
              Implicit output of last item on stack

1

Japt, 7 bytes

vUì x*2

Returns 1 for true, 0 for false

Try it online!

Explanation

vUì x*2
v        // Return 1 if the input is divisible by:
 Uì      //   Input split into a base-10 array
    x    //   Sum the array
     *2  //   While mapped by *2

I came up with a few other 7 byte solutions for this, too (although, I don't think this was one of them) - I'm convinced there's a shorter solution, though.
Shaggy


1

Java, 66 bytes

-1 byte thanks to Olivier

a->{int i=0;for(int b:(""+a).getBytes())i+=b-48;return a%(i*2)<1;}

Ungolfed & explanation:

a -> {
    int i = 0;

    for(int b : (""+a).getBytes()) { // Loop through each byte of the input converted to a string
        i += b-48; // Subtract 48 from the byte and add it to i
    }

    return a % (i*2) < 1 // Check if a % (i*2) is equal to one
    // I use <1 here for golfing, as the result of a modulus operation should never be less than 0
}

Use int instead of byte to save... a byte.
Olivier Grégoire

@OlivierGrégoire Thanks. Didn't notice that.
Okx

@Okx Need to change golfed code as well.
Henry

Your (golfed) code gives incorrect values for 110, 111. Probably the a%i*2 that's parsed as (a%i)*2 since modulus and multiplication have the same order.
Olivier Grégoire

@OlivierGrégoire Ah, that sucks.
Okx

1

J, 15 bytes

0 indicates truthy, nonzero indicates falsy.

|~[:+/2#"."0@":

Explanation

        "."0@":  convert to list of digits
  [:+/2#         sum 2 copies of the list ([: forces monadic phrase)
|~               residue of sum divided by argument?

Very clever way to avoid parens or multiple @ or [:!
Jonah

1
I debated posting this as my own answer, but it's not really different enough. |~2*1#.,.&.": for 13 bytes.
cole

I get a 'domain error' for this on my J Qt IDE. (|~[:+/2#"."0@": 112) Then for cole's code I get (|~2*1#.,.&.": 112)=0. :/ Possibly something wrong on my end.
DrQuarius



1

Haskell, 35 34 bytes

f x=mod x$2*sum[read[c]|c<-show x]

Try it online!

Returns '0' in the true case, the remainder otherwise.

Haskell, pointfree edition by nimi, 34 bytes

mod<*>(2*).sum.map(read.pure).show

Try it online!


Same byte count if you go pointfree: mod<*>(2*).sum.map(read.pure).show
nimi

Looks good, I added it in my submission.
bartavelle

1

PHP, 44 bytes

for(;~$d=$argn[$i++];)$t+=2*$d;echo$argn%$t;

Run like this:

echo 80 | php -nR 'for(;~$d=$argn[$i++];)$t+=2*$d;echo$argn%$t;'

Explanation

Iterates over the digits to compute the total, then outputs the modulo like most answers.


1

Java (OpenJDK 8), 55 53 bytes

a->{int i=0,x=a;for(;x>0;x/=10)i+=x%10*2;return a%i;}

Try it online!

A return value of 0 means truthy, anything else means falsy.

Since my comment in Okx's answer made no ripple, I deleted it and posted it as this answer, golfed even a bit more.

Further golfing thanks to @KrzysztofCichocki and @Laikoni who rightfully showed me I needn't answer a truthy/falsy value, but any value as long as I describe the result.


You can remove the <1 part at the end, so the result will be 0 for true and >0 for false, which is accebtable, this will result in additional -2 bytes, so you answer coiuld be like 53 bytes.
Krzysztof Cichocki

@KrzysztofCichoki No I can't: this is Java. The only truthy value is true.
Olivier Grégoire

@OlivierGrégoire While this true if nothing else is specified, this challenge specifically states Instead of truthy / falsy values for the true and false cases, you may instead specify any finite set of values for the true/false case, and their complement the other values..
Laikoni

@KrzysztofCichocki and Laikoni Sorry I misread that part, I just fixed it! Thank you both :) Also, sorry for rejecting the edit which was actually appropriate in this case.
Olivier Grégoire

1

Mini-Flak, 296 292 bytes

({}((()[()]))){(({}[((((()()()){}){}){}){}])({}(((({})){}){}{}){})[({})])(({}({})))({}(({}[{}]))[{}])({}[({})](({}{})(({}({})))({}(({}[{}]))[{}])({}[({})]))[{}])(({}({})))({}(({}[{}]))[{}])({}[({})])}{}({}(((({}){})))[{}]){({}((({}[()]))([{(({})[{}])()}{}]()){{}{}(({}))(()[()])}{})[{}][()])}

Try it online!

The TIO link have more comments from me, so it is partially easier to read.

Truthy/Falsey: Truthy (divisible) if the second number is equal to the third number, falsy otherwise. So both the truthy and falsy set are infinite, but I suppose that should be allowed. +10 byte if that is not.

Note: Leading/trailing newlines/whitespaces are not allowed in input.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.