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>

podłącz ładowarkę
źródło
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)
Erik the Outgolfer
źródło
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.

Arnauld
źródło
Ł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 -?
Wernisch
źródło
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.

mprogrammer
źródło
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\" ~^ "--"
Jo King
źródło
8

Python 2 , 42 37 bajtów

lambda j,p:'--'in p[j.find('/'):][:3]

Wypróbuj online!

5 bajtów dzięki minus siedem

Chas Brown
źródło
1
"--"in [...]dla -5 bajtów
ujemne siedem
@ ujemna siódemka: miła; dzięki!
Chas Brown
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.

Kreator pszenicy
źródło
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
maxb
źródło
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
1
Nie działa
Nick Kennedy
@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)
Kevin Cruijssen
źródło
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.

dzaima
źródło
1
-2:2≤1⊥∧⌿⍤<
Adám
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.

Keeta
źródło
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)

remoel
źródło
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.
Towarzyszu SparklePony
źródło
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. :(

Leo Tenenbaum
źródło
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

C (gcc) , 73 bajty

f(s,t,c)char*s,*t;{for(t=strchr(s,c=10);*s%5**t;)c-=*++t%2**s++%8;c=c<0;}

Wypróbuj online!

tsh
źródło
Zaproponuj index()zamiaststrchr()
ceilingcat
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
Alex Papageorgiou
źródło
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 !
stellatedHexahedron
źródło
1

Japt , 8 bajtów

Õ·kèS Êz

Spróbuj

Wcielenie ignorancji
źródło
Przepraszamy, nie widziałem tego przed opublikowaniem mojej ostatniej nocy: \
Shaggy
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.

Neil
źródło
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.

DaveMongoose
źródło
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
Veskah
źródło
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!

Michał
źródło
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
Superloach
źródło
Wiem, że mój kod nie obsługuje przypadków jednoznakowych platform - zaktualizowana wersja zostanie wkrótce edytowana.
Superloach
0

C (gcc), 103 bajty

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;}

Wypróbuj online!

Byłby znacznie krótszy ( 75 bajtów ), gdyby można było założyć, że po platformie występują końcowe białe znaki.

Steadybox
źródło
95 bajtów
pułap pułapu
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.

tsh
źródło
Zabawne jest nie używanie Ctrl lub Esc w Vimie.
tsh