Jimmy cadrà dalla sua piattaforma?


29

backstory

Incontra il mio amico Jimmy:

/o\

Jimmy è un piccolo personaggio a cui piace stare su piattaforme. Ecco Jimmy in piedi sicuro su una piattaforma:

         /o\
  -------------

Ora, Jimmy ha un buon senso dell'equilibrio, quindi può stare tranquillamente in piedi con una gamba fuori dalla piattaforma, in questo modo:

   /o\
    -------------------

Anche se se sta con due o più parti del corpo fuori dalla piattaforma, cadrà. Entrambi questi sono esempi in cui cadrà Jimmy:

/o\                                       /o\
  ----------        ----------------------   

La sfida

La tua sfida è scrivere un programma per determinare, data una stringa con la piattaforma e la posizione di Jimmy, se Jimmy può stare sulla piattaforma senza cadere.

  • Input: due linee che mostrano la posizione di Jimmy e la posizione della piattaforma sotto di lui. Questo può provenire da due input separati, un singolo input o un array di qualche tipo.

    1. È possibile accettare input in qualsiasi forma ragionevole, incluse funzioni e input standard. Ricorrere al codice hard solo se la tua lingua non supporta gli altri metodi di input.
  • Output: i valori booleani true e false o gli interi 1 o 0 per rappresentare rispettivamente true / false.

    1. Il valore booleano si basa sul fatto che Jimmy possa rimanere sulla piattaforma o meno: vero se Jimmy può rimanere sulla piattaforma o falso se cadrà.
  • Le dimensioni della piattaforma sono arbitrarie e possono essere modificate a piacimento. Il tuo programma dovrebbe tenerne conto.

    1. La piattaforma non può avere una lunghezza pari a zero e la piattaforma deve essere completa (nessun foro nella piattaforma).

    2. Ricorda che Jimmy cade quando due delle sue parti del corpo pendono dalla piattaforma. Una parte del corpo è un personaggio ASCII del suo corpo.

    3. Non è richiesto il trascinamento di spazi bianchi alla fine della piattaforma, ma il programma dovrebbe tenere conto di entrambe le situazioni, in cui vi è spazio bianco dopo la piattaforma e dove non lo è.

  • Prestare attenzione alle scappatoie standard vietate.

Casi test

         /o\               ✔️ TRUE
  -------------

/o\                        ✔️ TRUE
 ----------

                    /o\    ❌ FALSE
  ------------------

               /o\         ❌ FALSE
  -------

    /o\                    ❌ FALSE
     -

punteggio

Questo è , quindi vince il conteggio di byte più basso.

Classifica

Puoi visualizzare la classifica per questo post espandendo il widget / snippet di seguito. Affinché il tuo post sia incluso nelle classifiche, è necessario un header ( # header text) con le seguenti informazioni:

  • Il nome della lingua (termina con una virgola ,o un trattino -), seguito da ...

  • Il conteggio dei byte, come ultimo numero da visualizzare nell'intestazione.

Ad esempio, JavaScript (ES6), 72 bytesè valido, ma Fortran, 143 bytes (8-bit)non è valido perché il conteggio dei byte non è l'ultimo numero nell'intestazione (la risposta verrà riconosciuta come 8 byte, non approfittarne).

<!-- Run the snippet to see the leaderboard. Report any bugs to @xMikee1 on Github -->    <iframe src="https://xmikee1.github.io/ppcg-leaderboard/?id=187586" width="100%" height="100%" style="border:none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>


Possiamo assumere uno spazio bianco dopo Jimmy? Inoltre, se stai consentendo array di caratteri, in alcune lingue questi dovranno essere riempiti con spazi bianchi.
Nick Kennedy,

@NickKennedy È necessario tenere conto degli spazi bianchi finali o dello spazio bianco finale. Non ho stabilito regole rigide in merito.
connectyourcharger

12
Il titolo è "Jimmy Fall of the Platform" e hai richiesto di produrre "Jimmy rimarrà sulla piattaforma". Questo comportamento è previsto?
TSH

6
Puoi riformattare i tuoi casi di test per renderli più facili da copiare e incollare, per favore?
Shaggy

2
È consentito scambiare valori di verità e falsità? (ovvero uscita vera quando Jimmy cade e falsa quando ciò non accade?)
Mr. Xcoder

Risposte:


20

Gelatina , 6 byte

n⁶Sċ2Ẓ

Provalo online!

Spiegazione:

n⁶Sċ2Ẓ  args: z (e.g. [['/', 'o', '\\'], [' ', '-']] => 0)
        implicit return value: z ([['/', 'o', '\\'], [' ', '-']])
n⁶      dyad-nilad pair ([[1, 1, 1], [0, 1]])
 ⁶       4th command-line argument or space [4th CLA assumed absent] (' ')
n        vectorized inequality ([[1, 1, 1], [0, 1]])
  S     reduction by addition with base case 0 ([1, 2, 1])
   ċ2   dyad-nilad pair (1)
    2    literal (2)
   ċ     number of occurrences of right in left (1)
     Ẓ  primality (0)

26
A volte mi chiedo fino a che punto l'umanità sia avanzata nel vedere che in 6 byte puoi controllare se qualcuno sta per cadere da una piattaforma per il suo destino.
IMustBe Qualcuno

4
@IMustBe Qualcuno, se cadrò da una piattaforma per il mio destino, vorrei che qualcuno fosse veloce nel dirmelo!
Shaggy

18
@Shaggy Ho sempre pensato che fosse divertente quando le persone facevano delle sfide con un'introduzione: "Poiché non vogliamo passare troppo tempo su X, il codice deve essere il più breve possibile", anche se code-golf e prestazioni nella maggior parte dei casi sono opposti. Se riusciamo a salvare un byte che va da a O ( n n ) , che si preoccupa delle prestazioni, otteniamo un byte! ; pO(log(n))O(nn)
Kevin Cruijssen,

1
Non conosco Jelly, ma perché Ssomma le colonne anziché le righe? : S Se guardassi correttamente la wiki il codice fa: n⁶controlla per ogni personaggio che non è uguale a uno spazio (cioè ['/o\\', ' -'] -> [[1,1,1],[0,1]]); Selenco di somma (ma per qualche motivo questo somma le colonne anziché le righe .. così [[1,1,1],[0,1]] -> [1,2,1]); ċ2contare la quantità di 2s; controlla se si tratta di un numero primo (quindi 2 o 3), dopo che il risultato viene emesso implicitamente. Ma mi sarei aspettato [[1,1,1],[0,1]]di riassumere a [3,1]...
Kevin Cruijssen il

1
@KevinCruijssen Sequivale 0;+/Ɗ, cioè, a ridurre per addizione (che vettorializza) con valore iniziale 0. §fa quello che ti aspettavi Sdi fare.
Erik the Outgolfer,

19

JavaScript (ES6), 38 byte

Accetta input come (a)(b). Restituisce 0 o 1 .

a=>b=>b[a.search`o`]=='-'&/--/.test(b)

Provalo online!

Come?

Cerchiamo la posizione della parte centrale "o"del corpo di Jimmy nella prima corda e testiamo se c'è un trattino nella seconda corda nella stessa posizione.

b[a.search`o`] == '-'

L'unico caso in cui Jimmy non sarebbe sicuro in questa situazione è con una piattaforma a trattino singolo:

/o\
 -

Quindi ci assicuriamo inoltre che la piattaforma abbia una larghezza di almeno 2 :

/--/.test(b)

JavaScript (ES6), 36 byte

Versione alternativa se assumiamo che ci siano sempre trattini o spazi sotto Jimmy (ovvero l'input è rettangolare).

a=>b=>b[a.search`o`]!=0&/--/.test(b)

Provalo online!

Sfrutta il fatto che la coercizione a un valore numerico è 0 per uno spazio e NaN per un trattino.


Wow. Potresti spiegare come funziona?
connectyourcharger

@connectyourcharger Ho aggiunto una spiegazione.
Arnauld

3
Genio! Le risposte di JS di solito non sono così brevi.
connectyourcharger


@Oliver falliranno per"/o\\\n__"
TSH

10

Excel, 67 45 44 byte

=(MID(A2,FIND("o",A1),1)="-")*(TRIM(A2)>"-")

Metti Jimmy dentro A1, su una piattaforma dentro A2.

2 condizioni controllate:

  • Il torso di Jimmy ( o) è sulla piattaforma?
  • La piattaforma è più che semplice -?

1
@Keeta Le modifiche entro i primi cinque minuti non vengono visualizzate nella cronologia delle modifiche.
Fund Monica's Lawsuit

Dai test limitati che ho fatto, penso che puoi cambiare <>in>
Taylor Scott

9

Python 3, 88 43 byte

L'input viene dato sotto forma di un elenco contenente due stringhe: la prima stringa è la prima riga; la seconda stringa è la seconda riga.

lambda a:sum(1-(" "in i)for i in zip(*a))>1

Provalo online!

Un'altra versione, che lega per 43 byte (non sono stato in grado di ottenerlo più corto di 43):

lambda a,b:b[a.find("/"):][:3].count("-")>1

Provalo online!

Giù di 42 byte grazie a un suggerimento di Jo King.

Vecchia versione:

lambda s:sum((s.split("\n")[1]+" "*len(s))[i]=="-"and s[i]!=" "for i in range(len(s)))>1

-2 byte grazie allo Sriotchilism O'Zaic.

Funziona prendendo due input separati, quindi accoppiando le lettere corrispondenti. Conta il numero di coppie in cui nessuno dei due caratteri è uno spazio, quindi restituisce True se quel numero è maggiore di 1.


8

Perl 6 , 18 byte

{?/''B|Bq/}o&[~^]

Provalo online!

Accetta due parametri e restituisce un valore booleano per sapere se Jimmy rimarrà sulla piattaforma. Questo funziona XORing le due linee insieme e controllando se una delle parti di Jimmy è ancora sulla piattaforma.

Spiegazione:

             &[~^]   # String XOR operator
{          }o        # Combined with the anonymous function
 ?/       /          # That checks for the regex match
   ''B              # Unprintable, B, which is "/o" ~^ "--"
       |Bq           # Or B, q, which is "o\" ~^ "--"


6

Haskell , 34 byte

a#b=[1|(p,'-')<-zip a b,p>' ']>[1]

Provalo online!

Ho ottenuto questo combinando la mia tecnica di seguito con l'altra risposta haskell .

Haskell , 45 byte

x#'-'|x/=' '=1
x#y=0
(((>1).sum).).zipWith(#)

Provalo online!

Questo conta il numero di parti del corpo (caratteri non spaziali) che si trovano in cima alla piattaforma e quindi controlla che sia maggiore di 1. Il motivo per cui contiamo le parti del corpo sulla piattaforma anziché le parti del corpo è che zipWithtaglia la linea superiore essere la lunghezza del fondo e quindi tagliare le parti del corpo di Jimmy. Questo ci impedisce di dover fare qualcosa di simile cycle" "per riempire l'elenco.


1
Non è possibile ridurre di 2 byte convertendo in infisso?
Cole

1
@cole Sì, stavo solo facendo la modifica quando hai commentato :)
Wheat Wizard il

4

MathGolf , 6 14 byte

`^@╞^αmÆû-oñ╧╙

Provalo online!

Sono stati aggiunti 8 byte per tenere conto del caso limite presentato da Nick Kennedy.

Verifica se "-o-"è una sottostringa della stringa zippata di entrambe le linee e della stringa zippata in cui la prima riga di input ha il primo carattere rimosso. Accetta l'input come due stringhe separate, con l'unica modifica apportata al carattere come input /o\\, poiché \\è il modo corretto di inserire una barra rovesciata in una stringa in MathGolf.

Spiegazione

`                duplicate the top two items
 ^               zip top two elements on stack
  @              rrot3
   ╞             discard from left of string/array
    ^            zip top two elements on stack
     α           wrap last two elements in array
      mÆ         explicit map using 5 operators
        û-oñ     push "-o" and palindromize to make "-o-"
            ╧    pop a, b, a.contains(b)
                 map block ends here
             ╙   max of list

Oh, questo è un approccio migliore della mia risposta MathGolf .. Dopo l'interleave l'ho diviso di nuovo in parti della dimensione 2 invece di verificare direttamente "-o-".
Kevin Cruijssen,


@NickKennedy buona cattura! Vedrò come posso correggere il codice e aggiornare il post una volta superato. Probabilmente aggiungerà qualche byte, il che è sfortunato.
max

3

05AB1E (legacy) , 9 8 7 byte

ζðм2ùgp

-1 byte grazie a @ Mr.Xcoder con l'approccio di ðм2ù.

Immettere come elenco di due stringhe.

Funziona solo nella versione legacy di 05AB1E, perché ζpuò trasporre un elenco di stringhe e un elenco di caratteri 2D, mentre ilζ nella nuova versione 05AB1E funziona solo con l'elenco di caratteri 2D.

Provalo online o verifica tutti i casi di test .

Spiegazione:

ζ        # Zip/transpose; swapping rows/columns, with space as default filler
 ðм      # Remove all spaces from each string
   2ù    # Only leave strings of size 2
     g   # Count how many there are left
      p  # Check if this is a prime (2 or 3)
         # (after which the result is output implicitly)

1
Il tuo titolo
supera

@connectyourcharger Ah, probabilmente perché collego sempre la bytespagina di codice in modo da sapere che non è codificato in UTF-8 ma usa invece una codifica personalizzata. ;) Se vuoi posso modificare la mia risposta per mettere la codifica sotto il titolo, ma onestamente il codice della classifica dovrebbe essere in grado di gestirlo imho.
Kevin Cruijssen,

Sento di dover aggiungere un caso speciale per 05AB1E: è una delle uniche lingue che ha problemi con la tabella codici. Correggi presto l'arrivo.
connectyourcharger

1
Lottando per trovare una regex modificata. Per ora questo sarà un bug persistente. Se desideri contribuire, ecco lo script: github.com/xMikee1/ppcg-leaderboard/edit/master/docs/script.js . Potrei dover riformattare completamente i byte analizzando.
connectyourcharger

Non puoi modificare l'URL per https://github.com/Adriandmen/05AB1E/wiki/Codepage?7rendere 7 l'ultimo numero senza invalidare l'URL?
LF


3

Dyalog APL esteso, 11 10 8 byte

21⊥∧⌿⍤<

Provalo online!

Spiegazione:

21⊥∧⌿⍤<  a monadic train
       <  Compare the input with the implicit prototype element - a space.
          Returns a boolean matrix of characters that are greater than 0x20
    ∧⌿⍤   and-reduce that, i.e. places where both Jimmy and a platform is
  1      base 1 decode, aka sum - the amount of body parts over the platform
2        is that greater-or-equal to 2?

-2 grazie ad Adám.



3

Excel, 36 byte

=LEN(TRIM(MID(A2,FIND("/",A1),3)))>1

Jimmy dentro A1 , su una piattaforma dentro A2.

Trova la posizione di Jimmy, prende i 3 byte della piattaforma e taglia gli spazi. Se la lunghezza della piattaforma risultante è abbastanza lunga, Jimmy resta in piedi.


3

EXCEL, 94 71 byte. VBA (Excel), 87 byte

A1 = Jimmy, A2 = piattaforma

-23 byte. Grazie @Wernisch.

=(FIND("-",A2)-FIND("/",A1)<2)*(FIND("\",A1)-LEN(A2)<2)*(TRIM(A2)<>"-")

?[(FIND("-",A2)-FIND("/",A1)<2)*(FIND("\",A1)-LEN(A2)<2)]*(len(replace([A2]," ",""))>1)


1
Non puoi usare triminvece di len(replace?
Wernisch,

Oh! che non mi affondano mai nella testa. haha Grazie @Wernisch :)
rimuovi il

3

/// , 85 93 87 byte

/~/\/\///\/o\\/(o)~ 
/
~
~/ (o) /(o)~ (o)-/(o)~- -/--~(o) - ~/) ~/)-~/o~/(-/1~-~/(~/)~ 

Provalo online!

L'output è 1 se Jimmy è sicuro. Altrimenti non genera nulla. (Unario 1 e 0.) Poiché non esiste un altro modo per inserire input in ///, è necessario che sia codificato:

/~/\/\///\/o\\/(o)~ 
/
~
~/ (o) /(o)~ (o)-/(o)~- -/--~(o) - ~/) ~/)-~/o~/(-/1~-~/(~/)~ //<INPUT HERE> 

Per esempio:

/\/o\\/(o)// 
/
//
/// (o) /(o)// (o)-/(o)//- -/--//(o) - ///) ///)-///o///(-/1//-///(///)//         /o\
  ------------- 

( Provalo online! )

Nota lo spazio dopo il <INPUT HERE>.

Spiegazione:

NOTA! Il codice esplicativo non può essere eseguito a causa dei commenti. I commenti sono racchiusi tra parentesi graffe. Inoltre, il codice originale utilizza un golf dove //viene sostituito ~. Questo codice viene omesso dalla spiegazione.

/\/o\\/(o)/            {replace Jimmy with a Jimmy with curvy arms, because slashes are hard to manipulate in this language}
/ 
/
/                      {remove unneeded spaces after Jimmy, but before the floor}

/
//                     {get rid of the line break

/ (o) /(o)/            {remove all the spaces before both Jimmy and the floor}
/ (o)-/(o)/            {for each floor tile, remove it and one space before Jimmy. This detects whether Jimmy lines up with the floor.}
                       {If Jimmy is before the floor, then there will be extra floor.}
                       {If Jimmy is behind the floor, then there will be extra spaces before Jimmy.}
/- -/--/               {Handle the case where there is a hole beneath Jimmy but he is still well-supported}

/(o) - //              {Handle the case where only Jimmy's head is on the floor. The space at the end of the code is necessary for this.}
/) //                  {The rest of the substitutions clean up the result and handle each of the possible results that could exist at this point}
/)-//
/o//
/(-/1/
/-//
/(//
/)//


              /o\   
               --
 {there is a space right before this comment. The comment is only here to make the space visible and explain itself.}

  • +8 byte per correggere un bug
  • -6 byte applicando un ///trucco da golf standard .

1
Il codice sorgente sembra una strana emoji. \\ (o) - (o) //
tsh


2

Haskell, 59 byte

f a b=sum[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']<2

Provalo online!

La funzione si chiama così: f "/o\\ " " -- "

Come funziona (per f "/o\\" " -"):

b++cycle" "- Aggiunge un numero infinito di spazi dopo bper assicurarsi che Jimmy sia sempre sopra un -o (" -"" - ..."

zip a$b++cycle" "- Comprime insieme le due stringhe ( [('/',' '), ('o','-'), ('\\',' ')])

(p,q)<-zip a$b++cycle - Per ogni coppia nell'elenco zippato

[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']- Genera un elenco di 1s, la cui lunghezza è il numero di coppie che soddisfano le condizioni:

elem p"/o\\"- Il personaggio nella stringa superiore è una delle parti del corpo di Jimmy. (Soddisfatto di tutte e tre le coppie in questo esempio)

q==' '- Il carattere nella stringa inferiore è uno spazio. (Soddisfatto di ('/', ' ')e('\\', ' ') )

Quindi, la coppia deve essere quella in cui una delle parti del corpo di Jimmy si trova sopra uno spazio.

Perché in questo esempio, due coppie soddisfano entrambe le condizioni, l'elenco è [1,1]

sum[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']- Prendi la somma di quelle 1s (cioè la lunghezza della lista), che in questo esempio è 2.

sum[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']<2- Controlla se il numero di parti del corpo sopra uno spazio è inferiore a 2. In questo esempio, non lo è, quindi Jimmy cadrà. :(


Ho solo pensato di farti sapere che la tua risposta mi ha aiutato ad abbreviare la mia risposta . Quindi grazie!
Mago del grano


2

Kotlin, 60 byte

fun String.c(b:String)=zip(b){i,j->i>' '&&j>' '}.count{it}>1

Spiegazione:

fun String.c  # Define an extension function on string, so we don't have to provide a first argument (and we also have string method calls for free)
(b:String)    # Pass the second string as argument
=             # Shorthand syntax for fun body
zip(b)        # Essentially a.zip(b). Creates a List<Pair> by joining both arrays. 
              # Takes care of trailing whitespace, because it will be the size of the smaller array
{i,j->        # Declare a transformer lambda as second function argument
i>' '&&j>' '} # This essentially translates to: If i!=' ' and j=='-'
.count{it}    # Count the true values
>1

Benvenuti in Code Golf! Questa è sicuramente una bella prima risposta.
connectyourcharger

2

/// , 57 byte

/|/\/\///\/o\\/J| J/J*|
/|* /|  -/  | /|*-/|--/!|-/|*/|J|

Provalo online!

Aggiungi l'input alla fine del programma per poterlo eseguire. Restituisce la stringa vuota se Jimmy cade dalla piattaforma, altrimenti una stringa di punti esclamativi.

  • /|/\/\//sostituisce |con //, il che rende il codice più breve e più leggibile ( |viene utilizzato per delimitare ogni sostituzione)
  • /\/o\\/J| J/J*/sostituisce Jimmy con Jper brevità e cambia lo spazio a sinistra di lui a *destra di lui
  • Il prossimo sostituto si sbarazza delle nuove linee.
  • /* /| -/ | // annulla * e con lo spazio a sinistra della piattaforma. Se rimangono due o più spazi, Jimmy sta cadendo a sinistra e la piattaforma viene eliminata. Questa parte rimuove anche qualsiasi spazio bianco a destra della piattaforma.
  • /*-/|--/!/annulla se *e con la lunghezza della piattaforma. Se ne rimangono almeno due -, Jimmy non sta cadendo a destra, quindi vengono sostituiti con a !.
  • /-/|*/|J// elimina tutti i personaggi rimanenti che non lo sono !


1

Retina 0.8.2 , 16 byte

 (.*¶).
$1
¶ ?--

Provalo online! Il link include la suite di test. Spiegazione:

+`^ (.*¶).
$1

Mentre c'è ancora uno spazio sulla prima riga ed entrambe le righe hanno ancora più di un carattere, elimina lo spazio e il primo carattere della riga successiva. Nota: questo presuppone che non ci sia spazio finale dopo Jimmy. +1 byte necessario se è necessario consentire lo spazio finale.

¶ ?--

Controlla che ci siano almeno due pezzi di piattaforma sotto Jimmy.



1

Ruby 2.5.3, 44 byte

->a,b{a.zip(b).map(&:join).grep(/\S-/).size>1}

Input preso come due array. Sicuramente non è l'approccio più adatto al golf (vedi la risposta di GB), ma mi piace ogni scusa per usare la zipfunzione.


1

PowerShell , 63..55 53 byte

-1 byte grazie a mazzy

param($j,$f)''+($f|% t*y|?{$j[$i++]-gt32})-match'- -'

Provalo online!

Accetta input come due righe.

srotolato:

param($j,$f)            #Take $jimmy and $floor
''+                     #Implicitly converts next part to string
($f |% ToCharArray      #Convert $f to a char[] and...
    |?{                 #Only take the chars where...
        $j[$i++]-gt32   #The same indexed char in $j's ASCII # is > ' ' i.e. only get /o\
     }
)-match'- -'            #Arrays.ToString are joined with a space and we need 2 -'s

Huh. Non ho mai considerato PowerShell un ottimo linguaggio per giocare a golf, ma credo che in realtà non sia poi così male.
connectyourcharger

@connectyourcharger Può fare cose piuttosto ordinate con la pipeline ma ci sono sicuramente alcune aree in cui è un grande dolore nel culo.
Veskah,

Non mi sono mai preso la briga di impararlo a causa di quelle ragioni dolorose.
connectyourcharger

1
simpatico!
fai


1

Python 3.7 , 71 56 byte

lambda s:sum(j in'/o\\'and p=='-'for j,p in zip(*s))>1

Versione molto semplice e la più breve che potrei pensare di usare questo approccio. Ingressos è un elenco di due stringhe, la prima per la riga Jimmy, la seconda per la piattaforma. Comprimi i caratteri che si trovano uno sopra l'altro, quindi controlla se si -trova al di sotto di una parte di Jimmy in almeno due casi.

EDIT: ridotto di alcuni byte grazie a Blue!


1
Ciao, benvenuto su Code Golf! Un paio di cose: potresti voler specificare il formato di input nella tua risposta (sembra che sdovrebbero esserci due liste, una per Jimmy e una per la piattaforma?). Inoltre, ci sono alcuni punti in cui è possibile salvare byte: invece di sommare un elenco, è possibile sommare l'iteratore non elaborato (rimuovere le parentesi); invece di controllare >=2, controlla >1; puoi sommare Truee Falsegradire 1 e 0, senza bisogno dell'if-else. Infine, prima di pubblicare una nuova risposta nella stessa lingua, dovresti esaminare le precedenti per vedere se riesci a migliorare.
Blu

@Blue Ciao, grazie mille! E sì, lo terrò a mente in futuro. :)
Michael,

1

Chevron, 84 87 byte

>^__>^j
^i<<0
^i<<^i+1
^h<^i>^j
->+2??^h=/
->-3
>^__>^p
^q<^i|2>^p
->+2??^q<--
><0
><1

Questo è un linguaggio abbastanza nuovo di mia creazione: prototipo di interprete, documentazione e programmi di esempio sono disponibili su https://github.com/superloach/chevron .

Spiegazione:

  • >^__>^j - accetta jimmy come input TXT
  • ^i<<0 - inizializza l'indice su 0
  • ^i<<^i+1 - indice di incremento
  • ^h<^i>^j - Ottieni carattere di Jimmy all'indice
  • ->+2??^h=/ - saltare fuori dal giro alla gamba sinistra di Jimmy
  • ->-3 - torna all'inizio del loop
  • >^__>^p - accetta la piattaforma come input TXT
  • ^q<^i|2>^p - ritaglia 3 caratteri in jimmy
  • ->+2??^q<-- - se 2 trattini sotto jimmy, salta all'uscita vera
  • ><0 - falsa uscita
  • ><1 - uscita sincera

Sono consapevole che il mio codice non riesce a gestire i casi di piattaforma a carattere singolo: la versione aggiornata verrà modificata a breve.
Superloach

0

C (gcc), 103 byte

i,j,l;f(char*s){for(i=0;*s-10;j=*s++-47?j:i)++i;l=strlen(s)>j+1;s+=j;return l&&*s+s[1]+(s[2]?:32)>109;}

Provalo online!

Sarebbe molto più breve ( 75 byte ), se si potesse presumere che ci sia uno spazio bianco in coda dopo la piattaforma.




0

V , 18 byte

0vt/"_dj.d3lVkp0#x

Provalo online!

Spazi bianchi in uscita solo se caduta jimmy della piattaforma. Produce qualcosa di non bianco se Jimmy rimane sulla piattaforma.


Non usare Ctrl o Esc in Vim è divertente.
TSH
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.