È una tavola Takuzu valida?


21

Takuzu è un gioco di logica in cui devi completare una griglia con celle contenenti 0s e 1s. La griglia deve seguire 3 regole:

  1. Tre celle consecutive orizzontali o verticali non possono essere uguali.
  2. Deve esserci un numero uguale di se 0e1 s in ogni riga e colonna.
  3. Non ci sono due righe uguali e nessuna colonna può essere uguale.

Diamo un'occhiata a una griglia finita:

0011
1100
0101
1010

Come si può vedere, questa scheda segue regola 1, 2e 3. Non ci sono tre celle orizzontali o verticali uguali, tutte le righe e le colonne contengono un numero uguale di se 0e1 s, e non ci sono due righe e due colonne non sono gli stessi.

Diamo un'occhiata a una griglia che non è valida:

110100
010011
011010
101100
100011
001101

C'è un sacco di problemi con questa griglia. Ad esempio, la riga 5ha tre 0s di fila e la colonna 2ha tre 1s di fila, seguite da tre0 s. Pertanto, questa non è una griglia valida.

Compito:

Il tuo compito è quello di creare un programma che, dato un array 2D di n* n 0s e 1s, verifichi la scheda per vedere se è una scheda Takuzu valida e finita.

Esempi:

0011
1100
0101
1010

Questa scheda segue tutte le regole ed è quindi una scheda Takuzu valida. Per questo devi restituire un valore veritiero.

11
00

Questa non è una scheda valida - la riga 1non segue la regola 2. È necessario restituire un valore false per questo.

100110
101001
010101
100110
011010
011001

Questa non è una scheda valida, fallisce (solo) a causa della regola 3: la prima e la quarta riga sono uguali.

110100
001011
010011
101100
100110
011001

Questa non è una scheda valida, fallisce (solo) a causa della regola 3 - la prima e la quarta colonna sono uguali.

011010
010101
101100
010011
100110
101001

Questa è una scheda valida.

Regole e specifiche:

  • Puoi presumere che tutte le schede siano quadrate di dimensioni n * n, dove nè un numero intero pari positivo.
  • Puoi presumere che tutte le schede siano finite.
  • È possibile accettare input come un array 2D contenente valori che significano 0e 1, o come una stringa.
  • È necessario generare valori di verità e falsità coerenti per le schede di verità e falsità e i valori che rappresentano "verità" e "falsità" non possono essere gli stessi.

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



3
Lo so come 0h h1 ...
Erik the Outgolfer,

3
@EriktheOutgolfer Sì, ho iniziato sapendo solo questo come 0h h1, ma Takuzu è il nome originale del puzzle.
clismique,

@EriktheOutgolfer L'ho sempre saputo come "Puzzle binario" o "Subiku", ma "Takuzu" è come Qwerp-Derp ha citato il nome originale.
Kevin Cruijssen,

2
Alcuni altri casi di test sarebbero belli (mi mancano schede grandi e valide.)
Lynn,

Risposte:


16

Brachylog , 20 18 byte

≠\≠,?¬{∋s₃=|∋ọtᵐ≠}

Provalo online!

Spiegazione

≠                           All rows are different
 \                          Transpose
  ≠                         All columns are different
   ,?                       Append the list of rows to the list of columns
     ¬{          }          It is impossible that:
       ∋                      A row/column of the matrix…
        s₃=                   …contains a substring of 3 equal elements
           |                Or that:
            ∋ọ                The occurences of 1s and 0s in a row/column…
              tᵐ≠             …are not equal

" Aggiungi l'elenco delle righe all'elenco delle colonne " modo intelligente per giocare a golf! E qui ho pensato che la tua risposta di 20 byte fosse al punto e ho giocato a golf il più possibile. Vedo che Brachylog è bravo a convalidare le matrici come a risolverle . :)
Kevin Cruijssen,

1
Non dovrebbe uscire falseper questo ?
H.Piz

1
@ H.PWiz Buona scoperta, grazie. Ripristinato alla versione a 18 byte che funzionava.
Fatalizza il

@LuisMendo In pratica sto solo mettendo tutte le righe e tutte le colonne nella stessa lista.
Fatalizza il

2
@Zgarb Corretto, grazie. Questa è la terza volta che ho dovuto eseguire il rollback di una modifica, il post di apertura ha un disperato bisogno di migliori casi di test ...
Fatalizza il

11

Buccia , 19 18 byte

S=‼(Tf§=LṁDum(ṁ↑2g

Provalo online!

1 byte salvato grazie a H.PWiz!

L'idea principale è applicare una serie di trasformazioni all'ingresso che sono identità per una scheda valida e verificare se il risultato finale è lo stesso dell'input originale.

Spiegazione

S=‼(Tf§=LṁDum(ṁ↑2g
            m(ṁ↑2g    in each line, take at most two items for each sequence of equal items
           u          remove duplicate lines
     f§=LṁD          keep only those lines where the sum of each element doubled is equal to the length of the line
    T                 transpose the matrix (swap rows with columns)
  ‼                   do all the previous operations again
S=                    check if the final result is equal to the original input

2
Alcuni rimpasto per rimuovere un)
H.Piz

@ H.PWiz che era quasi ovvio, stupidami!
Leone

7

Gelatina , 17 byte

-*S;E3Ƥ€F$TȯQZµ⁺⁼

Provalo online!

-6 byte grazie a miglia e Jonathan Allan .


1
Credo che tu possa accorciare questo a 21 byte. TIO
miglia

@miles ... forse anche 19 byte ?
Jonathan Allan,

1
@JonathanAllan sono 18 byte ... sì, hai fatto di µZ$⁺nuovo la cosa: p ... e 17 byte scambiando un po ': D ora ho battuto brachylog hehe
Erik the Outgolfer

@EriktheOutgolfer Non più, è un pareggio!
Fatalizza il

@JonathanAllan Nice. Inoltre credo che questa sia la prima volta che il prefisso / infix rapido che ho aggiunto è stato utile.
miglia

5

Mathematica, 143 byte

And@@Flatten@(((s=#;Equal@@(Count[s,#]&/@{0,1})&&FreeQ[Subsequences@s,#]&/@{{1,1,1},{0,0,0}})&/@#)&&(DeleteDuplicates@#==#)&/@{#,Transpose@#})&


ingresso

[{{0, 0, 1, 1}, {1, 1, 0, 0}, {0, 1, 0, 1}, {1, 0, 1, 0}}]


5

Python 2 , 127 byte

a=input()
n=len(a)
b=zip(*a)
print[n/2]*n*2==map(sum,a+b)>len(set(a))==len(set(b))==n<'0, 0, 0'not in`a+b`>'1, 1, 1'not in`a+b`

Provalo online!

Legge un elenco di n n -tuple come input.

Potrei emettere in base al codice di uscita scrivendo 1/(…)invece di print…ma sembra scadente. Dovrei?

Spiegazione

nè la dimensione della scheda; bè un elenco di colonne (trasposizione di a). Il resto è un confronto a catena lunga:

  • [n/2]*n*2==map(sum,a+b) controlla la regola 2. Ogni riga e colonna deve essere sommata a n / 2.
  • map(sum,a+b)>len(set(a)) è sempre vero (elenco> int).
  • len(set(a))==len(set(b))==n controlla la regola 3.
  • n<'0, 0, 0' è sempre vero (int <str).
  • '0, 0, 0'not in`a+b`>'1, 1, 1'not in`a+b`controlla la regola 1. `a+b`è la rappresentazione in forma di stringa di tutte le righe e colonne; per l'esempio di input su TIO lo è

    "[(0, 0, 1, 1), (1, 1, 0, 0), (0, 1, 0, 1), (1, 0, 1, 0), (0, 1, 0, 1), (0, 1, 1, 0), (1, 0, 0, 1), (1, 0, 1, 0)]"

    Il `a+b`>'1, 1, 1'al centro è sempre vero poiché si garantisce che questa stringa inizi con "[", che è maggiore di "1".


Se si desidera eseguire l'output in base al codice di uscita, è possibile farlo [n/2]*n*2==map(sum,a+b)>len(set(a))==len(set(b))==n<'0, 0, 0'not in`a+b`>'1, 1, 1'not in`a+b`>x, che è 2 byte più corto della divisione e si traduce in NameErrorinput per verità.
Ovs,

3

Buccia , 27 25 byte

Λ§&Λȯ¬VEX3§&Λ§=#0#1S=uSeT

L'input è un elenco di elenchi e l'output è 1per Truee 0perFalse

Provalo online!

spiegazione

                      SeT    Create a list with the input and itself transposed
Λ                            Is the following function true for all in the list
 §&                          And the results of the following functions
   Λȯ¬VEX3                     Test for rule 1
          §&                   The and of:
            Λ§=#0#1                Test for rule 2
                   S=u             Test for rule 3

Test 1

Λȯ¬VEX3
Λ         Is it True for all ...
   V      Are any of the ...
     X3   Substrings of length 3 ...
    E     All equal
 ȯ¬       Logical not

Test 2

Λ§=#0#1
Λ         Is it true for all that ...
 §=       The results of the two functions are equal
   #0         Number of 0s
     #1       Number of 1s

Test 3

S=u
S=    Is the result of the following function equal two its argument
  u   Remove duplicates

3

Retina , 129 89 85 byte

.+
$&,$&
O#$`.(?=.*,)
$.%`
.+
$&;$&
+`(01|10)(?=.*;)

1ms`(.)\1\1|\d,?;|(\D\d+\b).*\2

Provalo online! Uscite 0 per valido, 1 per non valido. Modifica: salvato 4 byte grazie a @MartinEnder. Spiegazione:

.+
$&,$&

Duplica ogni riga con ,separatori.

O#$`.(?=.*,)
$.%`

Trasponi il primo duplicato.

.+
$&;$&

Duplica di nuovo, questa volta con i ;separatori.

+`(01|10)(?=.*;)

Elimina tutte le coppie di cifre corrispondenti che precedono un punto e virgola.

1ms`(.)\1\1|\d,?;|(\D\d+\b).*\2

Verifica se una colonna o una riga non supera una delle regole; (.)\1\1controlla tre cifre identiche di fila, \d,?;controlla una cifra non accoppiata e (\D\d+\b).*\2verifica la presenza di un duplicato.


Se lo scopo di (...).*nell'ultima fase è solo quello di fare, max(matches,1)allora puoi salvare tre byte usando invece un 1nella configurazione.
Martin Ender,

E .\b\d+\bpuò essere \D\d+\b.
Martin Ender,

@MartinEnder Inizialmente ho sostituito l'output non valido senza output e alla fine l'ho testato ... Alla fine l'ho affinato fino a un singolo test e mi sono reso conto che avrei potuto omettere il vantaggio .*che avevo usato in precedenza ma non pensavo di usare una configurazione per limitare il risultato, grazie!
Neil,

3

Pyth , 31 byte

Grazie mille a @Leaky Nun .

.Asm++mqy/k\0lQdm<hk3srL8d{Id,C

Verifica tutti i casi di test o provalo qui!


Pyth ,  48 46 44  42 byte

Questa è la soluzione iniziale.

&{IQ&{I.TQ.Am&q/d\0/d\1!+/d*3\0/d*3\1sC,.T

Verifica tutti i casi di test o provalo qui!

& {IQ & {I.TQ.Am & q / d \ 0 / d \ 1! + / D * 3 \ 0 / d * 3 \ 1sC, .T Programma completo con input implicito.

 {IQ L'input è invariante sotto la deduplicazione?
& {I.TQ E anche la sua trasposizione è invariante?
                                        .TQ Transpose.
                                           Q L'input.
                                     sC, comprimi sopra, [^, ^^] (e appiattisci).
    E la seguente condizione è soddisfatta?
          Tutti gli elementi sono veritieri quando si esegue la mappatura su ^^.
              q / d \ 0 / d \ 1 Ci sono tanti 0 quanti ne 1.
             &! + / d * 3 \ 0 / d * 3 \ 1 E non ci sono corse di 3 elementi uguali.

3

MATL , 27 byte

,G@?!]tEqts~w7BZ+|3<bXBSdvA

Input è una matrice contenente 0e 1. L'output è 0per falsy, 1per verità.

Provalo online! Oppure vedi i casi di test: 1 , 2 , 3 , 4 , 5 .

Spiegazione

,       % Do twice. First iteration will use the input, second its transpose
  G     %   Push input
  @     %   Push iteration index: first 0, then 1
  ?     %   If nonzero
    !   %     Transpose
  ]     %   End
  t     %   The top of the stack contains the input or its transpose. Duplicate
  Eq    %   Convert to bipolar form, i.e. replace 0 by -1
  t     %   Duplicate
  s     %   Sum of each column
  ~     %   Negate. If all results are true, condition 2 is fulfilled
  w     %   Swap. Moves copy of bipolar input/transposed input to top
  7B    %   Push [1 1 1], obtained as 7 converted to binary
  Z+    %   2D convolution. Gives a matrix of the same size as the input
  |3<   %   Is each entry less than 3 in absolute value? If all results are true,
        %   condition 1 is fulfilled
  b     %   Bubble up. Moves copy of input/transposed input to top
  XB    %   Convert each row from binary to a number
  Sd    %   Sort, consecutive differences. If all results are nonzero, condition 3
        %   is fulfilled
  v     %   Concatenate all results so far into a column vector
  A     %   True if all entries are nonzero
        % End (implicit). Display (implicit)

2

R , 114 107 byte

-7 grazie a Giuseppe, chiamando le funzioni fuori servizio e comprimendo davvero le condizioni

function(x)any(f(x),f(t(x)))
f=function(x)c(apply(x,1,function(y)max(rle(y)$l)>2+mean(y)-.5),duplicated(x))

Provalo online!

Questo applica solo le regole alle colonne della matrice, quindi alle colonne della trasposizione della matrice.

Accetta input nel modulo:

matrix(c(0,0,1,1,1,1,0,0,0,1,0,1,1,0,1,0), ncol=4)

È proprio così che R accetta array 2D.

Emette VERO per guasti, FALSO per passaggi.



Aggiornamenti generali: utilizzati mean(y)-.5all'interno della ffunzione interna per ottenere i mezzi anziché colMeanse resi ganonimi. Aggiungerà avvisi per la conversione doublein logicalnella chiamata anyma va bene.
Giuseppe,

@Giuseppe Grazie! Mi piace molto l'applicazione combinata, un cambiamento molto intelligente! L'ho avuto come 2 applicazioni separate in una fase iniziale e non mi rendevo conto di quanto potevi combinarle in modo pulito.
CriminallyVulgar


2

Perl 6 ,100 93 byte

Giunzioni FTW! Risparmiano 7 byte.

Per il momento, sembra che questo stia battendo tutti gli altri contributi scritti in lingue non golfistiche. Yippie!

{!max (@(.map(*.join)).&{.repeated| |.map:{$_~~/000|111/|.comb(0)-.comb(1)}}for @^a,[Z] @^a)}

Provalo online!

Spiegazione : È un blocco che prende la scheda come elenco di elenchi. Effettuiamo una trasposizione con [Z] @^a(riduci l'elenco degli elenchi con l'operatore zip). Quindi @^a,[Z] @^aè un elenco del consiglio di amministrazione e il suo recepimento. Ci passiamo sopra con il forquale funziona esattamente come map, essendo solo 1 carattere più economico in questo caso.

All'interno, per prima cosa uniamo gli elenchi che costituiscono le righe in stringhe, quindi abbiamo un elenco di stringhe anziché l'elenco di elenchi ( @(.map(*.join))). Quindi usiamo un blocco anonimo su di esso ( .&{...}), dove valutiamo effettivamente le regole. Li valuteremo solo per quanto riguarda le righe. (Dal momento che lo facciamo per l'array originale e anche per la trasposizione.)

Per salvarne un bel po ' ! ', usiamo un po' di logica e invece di test (NO repeated rows) AND (NO 3 consecutive same symbols) AND (NOT different counts of 0 and 1), testiamo NOT[ (repeated rows) OR (3 consecutive same symbols) OR (different counts) ]. Questo è ciò che facciamo nel blocco anonimo: .repeatedfornisce tutte le righe che si verificano più di una volta, quindi mappiamo sulle righe, proviamo a far corrispondere 3 simboli consecutivi usando una regex e sottraggiamo i conteggi di 0 e 1. Questi sono OR con il |. (In realtà crea una cosa molto potente chiamata giunzione , ma non usiamo nessuno dei suoi poteri :)) Dopo tutto ciò, otteniamo un elenco di 2 "bool" (giunzioni non sovrapposte). Finalmente o loro (usando max) e negate ( !), che dà il risultato desiderato.


2

J, 40 38 55 byte

0=[:([:+/^:_(3(0=3|+/)\"1 ]),:-.@~:,:#=[:+/"1+:@])|:,:]

Provalo online!

Definisce una funzione che accetta una matrice quadrata come input.

Almeno sta battendo Pyth (per ora ...) (erroneamente). Dovrei tornare a contare le emoji nascoste nel mio codice poiché J si presta bene anche a questo:

[: /^: :1 |: :] :-.@ :# :@] :~@

Spiegazione (leggermente obsoleta)

Questo sembra diverso dalla mia risposta e potrei riuscire ad aggiornarlo. Alcune parti sono sempre le stesse: non stavo solo controllando la regola 3 e controllando impropriamente la regola 2 prima.

Suddiviso in alcune funzioni e non golfato:

join_trans  =. |: ,: ]
part_3      =. 3 (0 = 3 | +/)\"1 ]
f           =. 1 - 2 * ]
main        =. 0 = [: ([: +/^:_ part_3 , f) join_trans

join_trans

|: ,: ]
|:       Transpose
   ,:    Laminated to
      ]  Input

Ciò unisce la trasposizione della matrice a se stessa, creando una matrice di matrici.

part_3

3 (0 = 3 | +/)\"1 ]
                  ]  Input (matrix and transpose)

Questo controlla la somma delle partizioni di 3 righe per vedere se è 3 o 0 (poiché una di queste significa una scheda non valida), restituendo 1 se lo è e 0 altrimenti. Funziona sia sulla matrice che sul suo recepimento poiché ha dato entrambi.

f

1 - 2 * ]

Per mancanza di un nome migliore, lo chiamo f. Sostituisce gli 0 con _1 e lascia invariato l'1. Questo per consentirmi di verificare se il numero di 0 e 1 è uguale in ogni riga e colonna (la somma di ciascuna delle righe dovrebbe essere 0).

principale

0 = [: ([: +/^:_ part_3 , f) join_trans
                             join_trans  Join transpose to input
                 part_3 , f              Apply the validity checks and join them
           +/^:_                         Sum until it converges
0 =                                      Equate to 0

Fondamentalmente, faccio leva sul fatto che l'ho impostato in modo tale f join_transche part_3 join_transentrambi dovrebbero sommare a 0 se la scheda è valida. part_3dovrebbe essere pari a zero per una scheda valida e la fsomma totale dovrebbe essere pari a zero per una scheda valida, il che significa che la somma delle loro somme è pari a 0 solo per una scheda valida.


Almeno batte Pyth (per ora ...). - Ho davvero bisogno di golf la mia risposta
Mr. Xcoder,

@ Mr.Xcoder haha ​​yeah, sembra che tu riesca sempre a capire qual è il motivo per cui ho aggiunto il bit "per ora". Non che la mia risposta non abbia spazio per il golf - semplicemente non so come farlo troppo bene.
Cole


1
Questo codice per 33 byte dovrebbe essere equivalente al tuo*/@,@,&(~:,(0~:3|3+/\]),#=2*+/)|:
miglia

2

Haskell , 137 136 127 byte

9 byte salvati grazie a Lynn!

import Data.List
j=isSubsequenceOf
l x=x==nub x&&and[sum y*2==length x&&not(j[0,0,0]y||j[1,1,1]y)|y<-x]
g x=l x&&l(transpose x)

Provalo online!


Tira entrambe le alls in una and: l x=x==nub x&&and[sum y*2==length x&&not(j[0,0,0]y||j[1,1,1]y)|y<-x]
Lynn,

@Lynn Grazie! Stavo cercando di mettere insieme quei due per un po '. Non so perché non sono riuscito a capirlo.
Wheat Wizard

1
Potresti cambiare j=isSubSequenceOfin j x=isSubSequenceOf[x,x,x]?
Cyoce,

@Cyoce Sembra perdere un byte. Se hai un modo di farlo che mi fa risparmiare un byte, sarei felice di implementarlo. L'idea sembra buona.
Wheat Wizard

Sul cellulare, hmmm ... Forse invece di j a binvocarlo (e definirlo) come a#b?
Cyoce,

2

Java 8, 350 326 325 312 303 299 298 259 255 byte

int r,z,c,p,i,j,k,d,u,v=1;int c(int[][]b){v(b);k=v-=u=1;v(b);return r;}void v(int[][]b){String m="",x;for(d=b.length;j<d|k<d;k+=u,j+=v,r=m.contains(x)|z!=0?1:r,m+=x)for(x="#",c=0,k*=u,j*=v;j<d&k<d;z+=i|i-1,c*=i^p^1,x+=p=i,r=++c>2?1:r,k+=v,j+=u)i=b[k][j];}

Ritorna 0quando è una scheda valida; 1se non è valido per una o più delle tre regole.

-95 byte grazie a @Nevay .

Spiegazione:

Provalo qui.

int r,z,c,p,i,j,k,d,u,v=1;
                     // Temp integers on class-level

int c(int[][]b){     // Method (1) with int-matrix parameter and int return-type
  v(b);              //  Validate the rows
  k=v-=u=1;          //  Switch rows with columns, and reset `u` to 1
  v(b);              //  Validate the columns
  return r;          //  Return the result
}                    // End of method (1)

void v(int[][]b){    // Separated method (2) with int-matrix parameter and no return-type
  String m="",s;     //  Two temp Strings to validate uniqueness of rows
  for(d=b.length;    //  Set the dimension of the matrix to `d`
      j<d|k<d        //  Loop (1) as long as either `j` or `k` is smaller than `d`
    ;                //   After every iteration:
     k+=u,j+=v       //    Increase the loop-indexes
     r=m.contains(s) //    If we've found a duplicated row,
     |z!=0?          //    or if the amount of zeroes and ones on this row aren't equal
      1:r,           //     Set `r` to 1 (invalid due to either rule 2 or 3)
     m+=s)           //    Append the current row to the String `m`
    for(s=",",       //   Set String `x` to a separator-character
        c=0,         //   Reset the counter to 0
        k*=u,j*=v,   //   Increase the loop-indexes
        j<d&k<d      //   Inner loop (2) as long as both `j` and `k` are smaller than `d`
     ;               //    After every iteration:
      z+=i|i-1,      //     Increase or decrease `z` depending on whether it's a 0 or 1
      c*=i^p^1,      //     Reset `c` if current digit `i` does not equal previous `p`
      s+=p=i,        //     Set previous `p` to current digit, and append it to String `s`
      r=++c>2?       //     If three of the same adjacent digits are found:
         1:r;        //      Set `r` to 1 (invalid due to rule 1)
        k+=v,j+=u)   //      Increase the loop-indexes
      i=b[k][j];     //    Set `i` to the current item in the matrix
                     //   End of inner loop (2) (implicit / single-line body)
                     //  End of loop (2) (implicit / single-line body)
}                    // End of separated method (2)


1

05AB1E , 29 byte

ø‚D€ÙQIDøì©O·IgQP®εŒ3ù€Ë_P}PP

Provalo online!

Spiegazione

Regola: 3

ø‚        # pair the input with the zipped input
  D       # duplicate
   €Ù     # deduplicate each
     Q    # check for equality with the unmodified copy

Regola: 2

IDøì          # prepend zipped input to input
    ©         # store a copy in register for rule 1
     O        # sum each row/column
      ·       # double
       IgQ    # check each for equality to length of input
          P   # product

Regola: 1

®ε            # apply to each row/column in register
  Œ3ù         # get sublists of length 3
     €Ë       # check each if all elements are equal
       _      # logical not
        P     # product
         }    # end apply
          P   # product

Quindi prendiamo il prodotto del risultato di tutte e 3 le regole con P


1

Dyalog APL, 64 52 51 49 48 byte

Richiede ⎕IO←0

{⍲/{(∨/∊⍷∘⍵¨3/¨⍳2)∧((⊢≡∪)↓⍵)∧∧/(≢=2×+/)⍵}¨⍵(⍉⍵)}

Provalo online!


1

PHP, 245 + 1 byte

ew questo è voluminoso. le interruzioni di riga sono solo per comodità di lettura:

$t=_;foreach($a=($i=str_split)($s=$argn)as$i=>$c)$t[$i/($e=strlen($s)**.5)+$i%$e*$e]=$c;
for(;$k++<2;$s=$t)$x|=preg_match("#000|111|(\d{"."$e}).*\\1#s",chunk_split($s,$e))
|($m=array_map)(array_sum,$m($i,$i($s,$e)))!=array_fill(0,$e,$e/2);echo!$x;

Prende una singola stringa senza newline, stampe 1per la verità, niente per la falsità.

Esegui come pipe -nRo provalo online .

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.