È 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.