Czy Jimmy spadnie z platformy?


29

Historia

Poznaj mojego przyjaciela Jimmy'ego:

/o\

Jimmy to mała postać, która lubi stać na platformach. Oto Jimmy bezpiecznie stojący na platformie:

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

Teraz Jimmy ma dobre wyczucie równowagi, dzięki czemu może bezpiecznie stać z jedną nogą poza platformą, w ten sposób:

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

Chociaż jeśli stanie z dwiema lub więcej częściami ciała poza platformą, spadnie. Oba są przykładami, w których Jimmy upadnie:

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

Wyzwanie

Twoim wyzwaniem jest napisanie programu określającego, biorąc pod uwagę ciąg z platformą i pozycją Jimmy'ego, czy Jimmy może stać na platformie bez upadku.

  • Dane wejściowe: Dwie linie pokazujące pozycję Jimmy'ego i pozycję platformy pod nim. Może to być z dwóch osobnych danych wejściowych, pojedynczego wejścia lub jakiegoś rodzaju tablicy.

    1. Możesz przyjmować dane wejściowe w dowolnej rozsądnej formie, włączając funkcje i standardowe dane wejściowe. Stosuj kodowanie tylko wtedy, gdy Twój język nie obsługuje innych metod wprowadzania.
  • Dane wyjściowe: wartości logiczne prawda i fałsz lub liczby całkowite 1 lub 0 reprezentują odpowiednio wartość prawda / fałsz.

    1. Wartość logiczna zależy od tego, czy Jimmy może pozostać na platformie, czy nie - prawda, jeśli Jimmy może pozostać na platformie, lub fałsz, jeśli spadnie.
  • Rozmiar platformy jest dowolny i można go dowolnie zmieniać. Twój program powinien to uwzględnić.

    1. Platforma nie może mieć długości zero, a platforma musi być kompletna (brak otworów w platformie).

    2. Pamiętaj, że Jimmy odpada, gdy dwie jego części ciała zwisają z platformy. Część ciała to jedna postać ASCII jego ciała.

    3. Końcowe białe znaki na końcu platformy nie są wymagane, ale twój program powinien uwzględniać obie sytuacje, w których po platformie są białe znaki, a gdzie nie.

  • Uważaj na standardowe luki, które są zabronione.

Przypadki testowe

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

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

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

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

    /o\                    ❌ FALSE
     -

Punktacja

To jest , więc wygrywa najmniejsza liczba bajtów.

Tabela liderów

Możesz wyświetlić tabelę wyników dla tego postu, rozwijając widżet / fragment kodu poniżej. Aby Twój post znalazł się w rankingu, potrzebujesz nagłówka ( # header text) z następującymi informacjami:

  • Nazwa języka (zakończ go przecinkiem ,lub myślnikiem -), a następnie ...

  • Liczba bajtów, jako ostatnia liczba wyświetlana w nagłówku.

Na przykład JavaScript (ES6), 72 bytesjest poprawny, ale Fortran, 143 bytes (8-bit)jest nieprawidłowy, ponieważ liczba bajtów nie jest ostatnią liczbą w nagłówku (twoja odpowiedź zostanie rozpoznana jako 8 bajtów - nie wykorzystuj tego).

<!-- 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>


Czy możemy założyć końcowe białe znaki po Jimmiego? Również jeśli zezwalasz na tablice znaków, w niektórych językach będą one musiały być uzupełnione spacjami.
Nick Kennedy

@NickKennedy Musisz uwzględnić końcowe białe znaki lub brak białych znaków. Nie ustanowiłem w tym zakresie surowych zasad.
connectyourcharger

12
Tytuł brzmi: „Jimmy Fall of the Platform”, a ty musisz wpisać: „Jimmy pozostanie na platformie”. Czy to oczekiwane zachowanie?
tsh

6
Czy możesz sformatować swoje przypadki testowe, aby ułatwić ich kopiowanie i wklejanie, proszę?
Kudłaty

2
Czy dozwolona jest wymiana wartości prawda-fałsz? (tzn. wyjście prawda, gdy Jimmy upada i fałsz, gdy tak się nie dzieje?)
Pan Xcoder,

Odpowiedzi:


20

Galaretka , 6 bajtów

n⁶Sċ2Ẓ

Wypróbuj online!

Wyjaśnienie:

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
Czasami zastanawiam się, jak daleko ludzkość posunęła się, aby zobaczyć, że w 6 bajtach można sprawdzić, czy ktoś spadnie z platformy na swoje przeznaczenie.
IMustBeSomeone

4
@IMustBeSomeone, jeśli mam spaść z platformy do mojej zagłady, chciałbym, żeby ktoś szybko mi powiedział!
Kudłaty

18
@Shaggy Zawsze myślałem, że to zabawne, gdy ludzie stawiają wyzwania, wprowadzając: „Ponieważ nie chcemy spędzać zbyt wiele czasu na X, kod musi być jak najkrótszy.”, Mimo że golf-golf i wydajność są w większości przypadków przeciwieństwami. Jeśli możemy zapisać bajt przechodzący od do O ( n n ) , który dba o wydajność, mamy bajt wyłączony! ; pO(log(n))O(nn)
Kevin Cruijssen

1
Nie znam galaretki, ale dlaczego Ssumuje kolumny zamiast wierszy? : S Jeśli poprawnie spojrzałem na wiki, kod: n⁶sprawdza dla każdego znaku, czy nie jest on równy spacji (tj. ['/o\\', ' -'] -> [[1,1,1],[0,1]]); Slista sum (ale z jakiegoś powodu sumuje kolumny zamiast wierszy ... więc [[1,1,1],[0,1]] -> [1,2,1]); ċ2policz ilość 2s; sprawdź, czy jest to liczba pierwsza (tak 2 lub 3), po niejawnym wyniku. Ale spodziewałbym [[1,1,1],[0,1]]się podsumować [3,1]...
Kevin Cruijssen

1
@KevinCruijssen Sjest równoważne 0;+/Ɗ, to znaczy redukuje przez dodanie (które wektoryzuje) o wartości początkowej 0. §robi to, czego się spodziewałeś S.
Erik the Outgolfer

19

JavaScript (ES6), 38 bajtów

Pobiera dane wejściowe jako (a)(b). Zwraca 0 lub 1 .

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

Wypróbuj online!

W jaki sposób?

Szukamy pozycji środkowej części "o"ciała Jimmy'ego w pierwszym sznurku i testujemy, czy w drugim sznurku w tej samej pozycji jest kreska.

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

Jedynym przypadkiem, w którym Jimmy byłby niebezpieczny w tej sytuacji, jest platforma z pojedynczym myślnikiem:

/o\
 -

Dlatego dodatkowo upewniamy się, że platforma ma szerokość co najmniej 2) :

/--/.test(b)

JavaScript (ES6), 36 bajtów

Wersja alternatywna, jeśli założymy, że pod Jimmy'm zawsze są kreski lub spacje (tzn. Wejście jest prostokątne).

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

Wypróbuj online!

Wykorzystuje fakt, że przymus wartości liczbowej wynosi 0 dla spacji i NaN dla myślnika.


Łał. Czy możesz wyjaśnić, jak to działa?
connectyourcharger

@connectyourcharger Dodałem wyjaśnienie.
Arnauld

3
Geniusz! Odpowiedzi JS zwykle nie są tak krótkie.
connectyourcharger


@Oliver nie powiedzie się przez"/o\\\n__"
tsh

10

Excel, 67 45 44 bajtów

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

Umieść Jimmy'ego A1na platformie w A2.

Sprawdzono 2 warunki:

  • Czy tułów Jimmy'ego ( o) jest na platformie?
  • Czy platforma jest czymś więcej niż tylko -?

1
@Keeta Edycje w ciągu pierwszych pięciu minut nie są wyświetlane w historii edycji.
Pozew funduszu Moniki

Z ograniczonych testów, które zrobiłem, myślę, że możesz zmienić <>na>
Taylor Scott,

9

Python 3, 88 43 bajtów

Dane wejściowe są podawane w postaci listy zawierającej dwa ciągi: pierwszy ciąg jest pierwszym wierszem; drugi ciąg jest drugą linią.

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

Wypróbuj online!

Inna wersja, wiążąca dla 43 bajtów (nie byłem w stanie uzyskać jej krótszej niż 43):

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

Wypróbuj online!

Zmniejszone o 42 bajty dzięki wskazówce Jo Kinga.

Stara wersja:

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

-2 bajty dzięki Sriotchilism O'Zaic.

Działa to poprzez przyjęcie dwóch osobnych danych wejściowych, a następnie parowanie odpowiednich liter. Liczy liczbę par, w których żaden znak nie jest spacją, a następnie zwraca wartość True, jeśli liczba ta jest większa niż 1.


8

Perl 6 , 18 bajtów

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

Wypróbuj online!

Pobiera dwa parametry i zwraca wartość logiczną, czy Jimmy pozostanie na platformie. Działa to poprzez połączenie XOR dwóch linii razem i sprawdzenie, czy którakolwiek część Jimmy'ego nadal znajduje się na platformie.

Wyjaśnienie:

             &[~^]   # 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 bajty

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

Wypróbuj online!

Mam ten, łącząc moją poniższą technikę z drugą odpowiedzią haskell .

Haskell , 45 bajtów

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

Wypróbuj online!

To zlicza liczbę części ciała (znaków spacji), które są na platformie, a następnie sprawdza, czy jest większa niż 1. Powodem, dla którego liczymy części ciała na platformie, a nie części ciała, jest to, że zipWithodetnie górną linię ma długość dna i tym samym może odciąć części ciała Jimmy'ego. To uniemożliwia nam zrobienie czegoś takiego jak cycle" "uzupełnienie listy.


1
Czy nie można zmniejszyć o 2 bajty, konwertując na infix?
cole

1
@cole Tak Właśnie robiłem edycję, kiedy skomentowałeś :)
Wheat Wizard

4

MathGolf , 6 14 bajtów

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

Wypróbuj online!

8 bajtów musiało zostać dodane, aby uwzględnić przypadek na krawędzi prezentowany przez Nicka Kennedy'ego.

Sprawdza, czy "-o-"jest podciągiem spakowanego ciągu obu linii i spakowanego ciągu, w którym w pierwszym wierszu wejściowym usunięto pierwszy znak. Pobiera dane wejściowe jako dwa osobne ciągi, z tą jedyną zmianą, że znak jest wprowadzany jako /o\\, ponieważ \\jest to poprawny sposób wprowadzania odwrotnego ukośnika w ciągu w MathGolf.

Wyjaśnienie

`                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

Och, to lepsze podejście niż moja odpowiedź MathGolf . Po przeplocie ponownie podzieliłem go na części rozmiaru 2 zamiast bezpośrednio sprawdzać „-o-”.
Kevin Cruijssen


@NickKennedy good catch! Zobaczę, jak mogę naprawić kod i zaktualizować post, gdy przejdzie. Prawdopodobnie doda kilka bajtów, co jest niefortunne.
maxb

3

05AB1E (starsza wersja) , 9 8 7 bajtów

ζðм2ùgp

-1 bajt dzięki @ Mr.Xcoder z podejściem ðм2ù.

Wprowadź jako listę dwóch ciągów.

Działa tylko w starszej wersji 05AB1E, ponieważ ζmoże transponować listę ciągów, a także listę znaków 2D, podczas gdy ζw nowej wersji 05AB1E działa tylko z listą znaków 2D.

Wypróbuj online lub sprawdź wszystkie przypadki testowe .

Wyjaśnienie:

ζ        # 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
Twój tytuł łamie
tabelę

@connectyourcharger Ah, prawdopodobnie dlatego, że zawsze link bytesdo strony kodowej, abyś wiedział, że nie jest zakodowany w UTF-8, ale zamiast tego używa niestandardowego kodowania. ;) Jeśli chcesz, mogę edytować moją odpowiedź, aby umieścić kodowanie poniżej tytułu, ale szczerze mówiąc, kod liderów powinien być w stanie obsłużyć go imho.
Kevin Cruijssen

Wydaje mi się, że muszę dodać specjalny przypadek dla 05AB1E - jest to jeden z niewielu języków, który ma problemy ze stroną kodową. Napraw nadchodzące wkrótce.
connectyourcharger

1
Walczy o wymyślenie zmodyfikowanego wyrażenia regularnego. Na razie będzie to trwały błąd. Jeśli chcesz przyczynić się, oto skrypt: github.com/xMikee1/ppcg-leaderboard/edit/master/docs/script.js . Być może będę musiał całkowicie przefiltrować bajty podczas analizowania.
connectyourcharger

Czy nie możesz zmodyfikować adresu URL, https://github.com/Adriandmen/05AB1E/wiki/Codepage?7aby 7 był ostatnim numerem bez unieważnienia adresu URL?
LF


3

Dyalog APL Extended, 11 10 8 bajtów

21⊥∧⌿⍤<

Wypróbuj online!

Wyjaśnienie:

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 dzięki Adámowi.



3

Excel, 36 bajtów

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

Jimmy w A1, na platformie w A2.

Znajduje pozycję Jimmy'ego, bierze 3 bajty platformy i przycina spacje. Jeśli wynikowa długość platformy jest wystarczająco długa, Jimmy stoi.


3

EXCEL, 94 71 bajtów. VBA (Excel), 87 bajtów

A1= Jimmy, A2= platforma

-23 bajty. Dziękuję @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
Nie możesz użyć trimzamiast len(replace?
Wernisch

O! które nigdy nie zapadają mi w głowę. haha Thanks @Wernisch :)
remoel

3

/// , 85 93 87 bajtów

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

Wypróbuj online!

Wyjście to 1, jeśli Jimmy jest bezpieczny. W przeciwnym razie nic nie wyprowadza. (Unary 1 i 0.) Ponieważ nie ma innego sposobu na wejście w ///, musi być na stałe zakodowany:

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

Na przykład:

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

( Wypróbuj online! )

Zwróć uwagę na miejsce po <INPUT HERE>.

Wyjaśnienie:

UWAGA! Nie można uruchomić kodu wyjaśniającego z powodu komentarzy. Komentarze są ujęte w nawiasy klamrowe. Również oryginalny kod używa golfa, w którym //jest zastąpiony ~. Ten kod został pominięty w objaśnieniu.

/\/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 bajtów, aby naprawić błąd
  • -6 bajtów poprzez zastosowanie standardowej ///sztuczki golfowej.

1
Kod źródłowy wygląda jak jakiś dziwny emoji. \\ (o) - (o) //
tsh


2

Haskell, 59 bajtów

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

Wypróbuj online!

Funkcja nazywa się tak: f "/o\\ " " -- "

Jak to działa (dla f "/o\\" " -"):

b++cycle" "- Dodaje nieskończoną liczbę spacji po, baby zapewnić, że Jimmy zawsze jest powyżej a -lub (" -"" - ..."

zip a$b++cycle" "- Zipuje dwa ciągi razem ( [('/',' '), ('o','-'), ('\\',' ')])

(p,q)<-zip a$b++cycle - Dla każdej pary na spakowanej liście

[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']- Generuje listę 1s, której długość jest liczbą par spełniających warunki:

elem p"/o\\"- Postać w górnym szeregu jest jedną z części ciała Jimmy'ego. (Zadowolony przez wszystkie trzy pary w tym przykładzie)

q==' '- Znak w dolnym ciągu jest spacją. (Zadowolony przez ('/', ' ')i ('\\', ' '))

Tak więc para musi być tą, w której jedna z części ciała Jimmy'ego znajduje się nad przestrzenią.

Ponieważ w tym przykładzie dwie pary spełniają oba warunki, lista jest następująca [1,1]

sum[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']- Weź sumę tych 1liczb (tj. Długość listy), która w tym przykładzie jest 2.

sum[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']<2- Sprawdź, czy liczba części ciała nad przestrzenią jest mniejsza niż 2. W tym przykładzie tak nie jest, więc Jimmy spadnie. :(


Pomyślałem, że dam ci znać, że twoja odpowiedź pomogła mi skrócić moją własną odpowiedź . Więc dziękuję!
Wheat Wizard


2

Kotlin, 60 bajtów

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

Wyjaśnienie:

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

Witamy w Code Golf! To z pewnością bardzo ładna pierwsza odpowiedź.
connectyourcharger

2

/// , 57 bajtów

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

Wypróbuj online!

Dołącz dane wejściowe na końcu programu, aby uruchomić. Zwraca pusty ciąg, jeśli Jimmy spadnie z platformy, w przeciwnym razie ciąg wykrzykników.

  • /|/\/\//zastępuje |z //, co sprawia, że kod zarówno krótsze i bardziej czytelne ( |służy do wytyczą każdej wymianie)
  • /\/o\\/J| J/J*/zamienia Jimmy'ego Jna zwięzłość i zmienia przestrzeń po lewej stronie na* na prawo od niego
  • Kolejny zamiennik pozbywa się nowych linii.
  • /* /| -/ | //anuluje *si z odstępem po lewej stronie platformy. Jeśli pozostały dwa lub więcej miejsc, Jimmy spada w lewo, a platforma jest usuwana. Ta część usuwa również wszelkie białe spacje po prawej stronie platformy.
  • /*-/|--/!/anuluje *si z długością platformy. Jeśli pozostały co najmniej dwa -, Jimmy nie spada w prawo, więc są zastępowane przez !.
  • /-/|*/|J// usuwa każdą pozostałą postać, która nie jest !


1

Retina 0.8.2 , 16 bajtów

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

Wypróbuj online! Link zawiera pakiet testowy. Wyjaśnienie:

+`^ (.*¶).
$1

Chociaż w pierwszym wierszu nadal znajduje się spacja, a oba wiersze mają więcej niż jeden znak, usuń spację i pierwszy znak następnego wiersza. Uwaga: Zakłada się, że po Jimmieym nie ma końcowej spacji. Potrzebny jest +1 bajt, jeśli trzeba dopuścić końcowe miejsce.

¶ ?--

Sprawdź, czy pod Jimmy są co najmniej dwa elementy platformy.



1

Ruby 2.5.3, 44 bajty

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

Dane wejściowe są traktowane jako dwie tablice. Zdecydowanie nie jest to najbardziej przyjazne podejście do gry w golfa (patrz odpowiedź GB), ale podoba mi się każda wymówka, aby skorzystać z tej zipfunkcji.


1

PowerShell , 63..55 53 bajty

-1 bajt dzięki mazzy

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

Wypróbuj online!

Pobiera dane wejściowe jako dwa wiersze.

Rozwinięty:

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 Nigdy nie uważałem PowerShell za świetny język golfowy, ale chyba nie jest tak źle.
connectyourcharger

@connectyourcharger Może zrobić całkiem fajne rzeczy z rurociągiem, ale zdecydowanie jest kilka obszarów, w których jest to ogromny ból w dupie.
Veskah

Nigdy nie zadałem sobie trudu, aby się tego nauczyć z powodu tych bolesnych przyczyn.
connectyourcharger



1

Python 3.7 , 71 56 bajtów

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

Bardzo prosta wersja i najkrótsza, jaką mogłem pomyśleć o zastosowaniu tego podejścia. Dane wejściowe sto lista dwóch ciągów, pierwszy dla wiersza Jimmy'ego, drugi dla platformy. Zapakuj znaki, które znajdują się nad sobą, a następnie sprawdź, czy- znajduje się poniżej części Jimmy'ego w co najmniej dwóch przypadkach.

EDYCJA: Zmniejszona o kilka bajtów dzięki Blue!


1
Cześć, witamy w Code Golf! Kilka rzeczy: możesz podać format wejściowy w swojej odpowiedzi (wygląda na to, że spowinny to być dwie listy, jedna dla Jimmy i jedna dla platformy?). Ponadto istnieje kilka miejsc, w których można zapisać bajty: zamiast sumowania listy można zsumować nieprzetworzony iterator (usunąć nawiasy kwadratowe); zamiast sprawdzania >=2sprawdź >1; możesz zsumować Truei Falsepolubić 1 i 0, bez potrzeby if-else. Na koniec, zanim opublikujesz nową odpowiedź w tym samym języku, powinieneś spojrzeć na poprzednie, aby sprawdzić, czy możesz poprawić.
Niebieski,

@Blue Cześć, wielkie dzięki! I tak, będę o tym pamiętać w przyszłości. :)
Michael,

1

Chevron, 84 87 bajtów

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

To całkiem nowy język mojego autorstwa - interpreter prototypów, dokumentacja i przykładowe programy można znaleźć na stronie https://github.com/superloach/chevron .

Wyjaśnienie:

  • >^__>^j - weź Jimmy'ego jako wejście TXT
  • ^i<<0 - zainicjować indeks na 0
  • ^i<<^i+1 - wskaźnik przyrostu
  • ^h<^i>^j - uzyskaj charakter Jimmy na indeksie
  • ->+2??^h=/ - wyskocz z pętli na lewą nogę Jimmy'ego
  • ->-3 - wskocz z powrotem na początek pętli
  • >^__>^p - weź platformę jako wejście TXT
  • ^q<^i|2>^p - wytnij 3 znaki pod Jimmy
  • ->+2??^q<-- - jeśli 2 kreski pod Jimmy, przeskocz do prawdziwego wyjścia
  • ><0 - wyjście falsy
  • ><1 - prawdziwe wyjście

Wiem, że mój kod nie obsługuje przypadków jednoznakowych platform - zaktualizowana wersja zostanie wkrótce edytowana.
Superloach



0

V , 18 bajtów

0vt/"_dj.d3lVkp0#x

Wypróbuj online!

Wyjście białych znaków tylko wtedy, gdy Jimmy Fall platformy. Wypisuj coś innego niż białe znaki, jeśli Jimmy pozostaje na platformie.


Zabawne jest nie używanie Ctrl lub Esc w Vimie.
tsh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.