Akankah Jimmy jatuh dari panggungnya?

29

Backstory

Temui teman saya Jimmy:

/o\

Jimmy adalah karakter kecil yang suka berdiri di atas platform. Inilah Jimmy yang berdiri dengan aman di atas platform:

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

Sekarang, Jimmy memiliki rasa keseimbangan yang baik, sehingga ia dapat berdiri dengan aman dengan satu kaki terlepas dari platform, seperti:

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

Meskipun jika dia berdiri dengan dua atau lebih bagian tubuh dari platform, dia akan jatuh. Keduanya adalah contoh di mana Jimmy akan jatuh:

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

Tantangan

Tantangan Anda adalah menulis program untuk menentukan, diberi string dengan platform dan posisi Jimmy, jika Jimmy bisa berdiri di atas platform tanpa jatuh.

  • Input: Dua baris yang menunjukkan posisi Jimmy dan posisi platform di bawahnya. Ini bisa dari dua input terpisah, satu input, atau berbagai macam jenis.

    1. Anda dapat mengambil input melalui formulir apa pun yang masuk akal, termasuk fungsi dan input standar. Gunakan hanya hard-coding jika bahasa Anda tidak mendukung metode input lainnya.
  • Output: Nilai boolean benar dan salah, atau bilangan bulat 1 atau 0 masing-masing mewakili benar / salah.

    1. Nilai boolean didasarkan pada apakah Jimmy dapat tetap di platform atau tidak - benar jika Jimmy dapat tetap di platform, atau salah jika ia akan jatuh.
  • Ukuran platform sewenang-wenang dan dapat diubah sesuka hati. Program Anda harus menjelaskan hal itu.

    1. Platform tidak boleh panjang nol, dan platform harus lengkap (tidak ada lubang di platform).

    2. Ingatlah bahwa Jimmy jatuh ketika dua bagian tubuhnya menggantung dari peron. Bagian tubuh adalah salah satu karakter ASCII dari tubuhnya.

    3. Membuntuti spasi putih di akhir platform tidak diperlukan, tetapi program Anda harus menjelaskan kedua situasi, di mana ada spasi putih setelah platform dan di mana tidak ada.

  • Berhati-hatilah dengan celah standar yang dilarang.

Uji kasus

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

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

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

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

    /o\                    ❌ FALSE
     -

Mencetak gol

Ini adalah , sehingga jumlah byte terendah menang.

Papan peringkat

Anda dapat melihat leaderboard untuk posting ini dengan memperluas widget / snippet di bawah ini. Agar posting Anda dimasukkan dalam peringkat, Anda perlu tajuk ( # header text) dengan info berikut:

  • Nama bahasa (akhiri dengan tanda koma ,atau tanda hubung -), diikuti oleh ...

  • Jumlah byte, sebagai angka terakhir yang muncul di header Anda.

Misalnya, JavaScript (ES6), 72 bytesvalid, tetapi Fortran, 143 bytes (8-bit)tidak valid karena jumlah byte bukan nomor terakhir di header (jawaban Anda akan dikenali sebagai 8 byte - jangan memanfaatkan ini).

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

hubungkan charger Anda
sumber
Bisakah kita mengasumsikan spasi setelah Jimmy? Juga jika Anda mengizinkan array karakter, dalam beberapa bahasa itu harus diisi dengan spasi putih.
Nick Kennedy
@NickKennedy Anda harus memperhitungkan trailing whitespace atau tanpa trailing whitespace. Saya tidak menetapkan aturan ketat tentang itu.
Hubungkan chargerAnda
12
Judulnya adalah "jimmy akan jatuh dari platform" dan Anda harus menampilkan "jimmy akan tetap di platform". Apakah ini perilaku yang diharapkan?
tsh
6
Bisakah Anda memformat ulang kasus pengujian Anda untuk membuatnya mudah disalin & tempel?
Shaggy
2
Apakah bertukar nilai true-falsy diperbolehkan? (Yaitu keluaran benar ketika Jimmy jatuh dan palsu ketika itu tidak terjadi?)
Mr. Xcoder

Jawaban:

20

Jelly , 6 byte

n⁶Sċ2Ẓ

Cobalah online!

Penjelasan:

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
sumber
26
Terkadang saya bertanya-tanya seberapa jauh umat manusia telah maju untuk melihat bahwa dalam 6 byte Anda dapat memeriksa apakah seseorang akan jatuh dari platform ke malapetaka mereka.
IMustBeSomeone
4
@IMustBeSomeone, jika saya akan jatuh dari platform ke malapetaka saya, saya ingin seseorang dengan cepat memberi tahu saya!
Shaggy
18
@Shaggy Saya selalu berpikir itu lucu ketika orang membuat tantangan dengan perkenalan: "Karena kami tidak ingin menghabiskan terlalu banyak waktu pada X, kode harus sesingkat mungkin.", Meskipun kode-golf dan kinerja dalam banyak kasus bertentangan. Jika kita dapat menyimpan byte dari ke O ( n n ) , siapa yang peduli dengan kinerja, kita mendapat byte! ; pO(log(n))O(nn)
Kevin Cruijssen
1
Saya tidak tahu Jelly, tetapi mengapa Smenjumlahkan kolom alih-alih baris? : S Jika saya melihat wiki dengan benar, kode tidak: n⁶memeriksa setiap karakter yang tidak sama dengan spasi (yaitu ['/o\\', ' -'] -> [[1,1,1],[0,1]]); Smenjumlahkan daftar (tetapi karena alasan tertentu ini menjumlahkan kolom alih-alih baris .. jadi [[1,1,1],[0,1]] -> [1,2,1]); ċ2hitung jumlah 2s; periksa apakah ini prima (jadi 2 atau 3), setelah hasilnya adalah output secara implisit. Tapi saya akan berharap [[1,1,1],[0,1]]untuk menyimpulkan ke [3,1]..
Kevin Cruijssen
1
@KevinCruijssen Ssetara dengan 0;+/Ɗ, yaitu, kurangi dengan penambahan (yang di-vektorisasi) dengan nilai awal 0. §melakukan apa yang Anda harapkan S.
Erik the Outgolfer
19

JavaScript (ES6), 38 byte

Mengambil input sebagai (a)(b). Mengembalikan 0 atau 1 .

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

Cobalah online!

Bagaimana?

Kami mencari posisi bagian tengah "o"tubuh Jimmy di senar pertama dan menguji apakah ada garis putus-putus di senar kedua di posisi yang sama.

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

Satu-satunya kasus di mana Jimmy tidak aman dalam situasi ini adalah dengan platform dasbor tunggal:

/o\
 -

Jadi kami juga memastikan bahwa platform memiliki lebar minimal 2 :

/--/.test(b)

JavaScript (ES6), 36 byte

Versi alternatif jika kita berasumsi bahwa selalu ada tanda hubung atau spasi di bawah Jimmy (yaitu input berbentuk persegi panjang).

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

Cobalah online!

Mengambil keuntungan dari kenyataan bahwa paksaan ke nilai numerik adalah 0 untuk spasi dan NaN untuk tanda hubung.

Arnauld
sumber
Wow. Bisakah Anda menjelaskan cara kerjanya?
hubungkan charger Anda
@connectyourcharger Saya sudah menambahkan penjelasan.
Arnauld
3
Jenius! Jawaban JS biasanya tidak sesingkat itu.
connectyourcharger
@Oliver akan gagal untuk"/o\\\n__"
tsh
10

Excel, 67 45 44 byte

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

Tempatkan Jimmy A1, di atas platformA2 .

2 kondisi diperiksa:

  • Apakah Jimmy torso (o ) ada di platform?
  • Apakah platform lebih dari sekadar -?
Wernisch
sumber
1
@Keeta Suntingan dalam lima menit pertama tidak ditampilkan dalam riwayat edit.
Dana Gugatan Monica
Dari pengujian terbatas yang saya lakukan, saya pikir Anda dapat berubah <>menjadi>
Taylor Scott
9

Python 3, 88 43 byte

Input diberikan dalam bentuk daftar yang berisi dua string: string pertama adalah baris pertama; string kedua adalah baris kedua.

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

Cobalah online!

Versi lain, mengikat untuk 43 byte (saya belum bisa mendapatkannya lebih pendek dari 43):

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

Cobalah online!

Turun sebesar 42 byte berkat tip dari Jo King.

Versi lama:

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

-2 byte terima kasih kepada Sriotchilism O'Zaic.

Ini bekerja dengan mengambil dua input terpisah, lalu memasangkan huruf yang sesuai. Ini menghitung jumlah pasangan di mana tidak ada karakter yang merupakan spasi, lalu mengembalikan True jika angka itu lebih besar dari 1.

mprogrammer
sumber
8

Perl 6 , 18 byte

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

Cobalah online!

Mengambil dua parameter dan mengembalikan boolean apakah Jimmy akan tetap di platform. Ini bekerja dengan XORing dua baris bersama dan memeriksa apakah salah satu bagian dari Jimmy masih di platform.

Penjelasan:

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

Python 2 , 42 37 byte

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

Cobalah online!

5 byte thx ke negatif tujuh

Chas Brown
sumber
1
"--"in [...]untuk -5 byte
negatif tujuh
@negatif tujuh: bagus; Terima kasih!
Chas Brown
6

Haskell , 34 byte

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

Cobalah online!

Saya mendapatkannya dengan menggabungkan teknik di bawah ini dengan jawaban haskell lainnya .

Haskell , 45 byte

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

Cobalah online!

Ini menghitung jumlah bagian tubuh (karakter non-spasi) yang ada di atas platform dan kemudian memeriksa lebih besar dari 1. Alasan mengapa kita menghitung bagian tubuh pada platform daripada bagian tubuh yang tidak aktif adalah yang zipWithakan memotong garis atas menjadi panjang bagian bawah dan dengan demikian dapat memotong bagian tubuh Jimmy. Ini mencegah kita dari harus melakukan sesuatu seperti cycle" "membuat daftar.

Wisaya Gandum
sumber
1
Tidak bisakah Anda mengurangi sebesar 2 byte dengan mengonversi ke infix?
cole
1
@cole Yap Saya baru saja melakukan edit ketika Anda berkomentar :)
Wheat Wizard
4

MathGolf , 6 14 byte

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

Cobalah online!

8 byte harus ditambahkan ke akun untuk kasus tepi yang disajikan oleh Nick Kennedy.

Memeriksa apakah "-o-"merupakan substring dari string zip dari kedua garis, dan string zip di mana baris input pertama memiliki karakter pertama dihapus. Mengambil input sebagai dua string terpisah, dengan satu-satunya perubahan adalah bahwa karakter adalah input /o\\, sejak\\ merupakan cara yang benar untuk memasukkan backslash dalam string di MathGolf.

Penjelasan

`                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
maks
sumber
Oh, itu pendekatan yang lebih baik daripada jawaban MathGolf saya .. Setelah interleave saya membaginya menjadi bagian-bagian ukuran 2 lagi daripada langsung memeriksa "-o-".
Kevin Cruijssen
@NickKennedy tangkapan bagus! Saya akan melihat bagaimana saya dapat memperbaiki kodenya, dan memperbarui postingan setelah lewat. Mungkin akan menambahkan beberapa byte, yang sangat disayangkan.
Maks
3

05AB1E (lawas) , 9 8 7 byte

ζðм2ùgp

-1 byte terima kasih kepada @ Mr.Xcoder dengan pendekatanðм2ù .

Masukan sebagai daftar dua string.

Hanya berfungsi di versi lawas 05AB1E, karena ζdapat mengubah urutan string serta daftar karakter 2D, sedangkan ζdalam versi 05AB1E baru hanya bekerja dengan daftar karakter 2D.

Cobalah secara online atau verifikasi semua kasus uji .

Penjelasan:

ζ        # 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
sumber
1
Judul Anda memecahkan leaderboard, smh :)
connectyourcharger
@connectyourcharger Anda Ah, mungkin karena saya selalu menautkan byteske halaman kode sehingga Anda tahu itu tidak dikodekan dalam UTF-8 tetapi menggunakan pengkodean kustom sebagai gantinya. ;) Jika Anda mau, saya dapat mengedit jawaban saya untuk meletakkan pengkodean di bawah judul, tetapi jujur ​​kode leaderboard harus dapat menanganinya imho.
Kevin Cruijssen
Saya merasa perlu menambahkan kasus khusus untuk 05AB1E - ini adalah satu-satunya bahasa yang memiliki masalah dengan codepage. Perbaiki segera-ish.
Hubungkan chargerAnda
1
Berjuang untuk menghasilkan regex yang dimodifikasi. Untuk saat ini itu akan menjadi bug yang bertahan. Jika Anda ingin berkontribusi di sini skripnya: github.com/xMikee1/ppcg-leaderboard/edit/master/docs/script.js . Saya mungkin harus memperbaiki parsing byte sepenuhnya.
Hubungkan chargerAnda
Tidak bisakah Anda memodifikasi URL https://github.com/Adriandmen/05AB1E/wiki/Codepage?7untuk menjadikan 7 angka terakhir tanpa membatalkan URL?
LF
3

APL Dyalog Diperpanjang, 11 10 8 byte

21⊥∧⌿⍤<

Cobalah online!

Penjelasan:

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 Terima kasih kepada Adám.

dzaima
sumber
1
-2:2≤1⊥∧⌿⍤<
Adám
3

Excel, 36 byte

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

Jimmy A1, pada platform di A2.

Menemukan posisi Jimmy, dan mengambil 3 byte platform dan memangkas ruang. Jika panjang platform yang dihasilkan cukup panjang, Jimmy berdiri.

Keeta
sumber
3

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

A1= Jimmy, A2= platform

-23 byte. @Wernisch terima kasih.

=(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
sumber
1
Tidak bisakah Anda menggunakan trimbukan len(replace?
Wernisch
oh! yang tidak pernah tenggelam di kepalaku. haha Terima kasih @Wernisch :)
remoel
3

/// , 85 93 87 byte

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

Cobalah online!

Output adalah 1 jika Jimmy aman. Kalau tidak menghasilkan apa-apa. (Unary 1 dan 0.) Karena tidak ada cara lain untuk mengambil input di ///, itu perlu kode-keras:

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

Sebagai contoh:

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

( Coba online!)

Perhatikan spasi setelah <INPUT HERE>.

Penjelasan:

CATATAN! Kode penjelasan tidak dapat dijalankan karena komentar. Komentar terlampir dalam kurung kurawal. Juga, kode asli menggunakan golf tempat //diganti ~. Kode ini dihilangkan dari penjelasan.

/\/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 untuk memperbaiki bug
  • -6 byte dengan menerapkan ///trik golf standar .
Kamerad SparklePony
sumber
1
Kode sumber terlihat seperti beberapa emoji aneh. \\ (o) - (o) //
tsh
2

Haskell, 59 byte

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

Cobalah online!

Fungsi ini disebut seperti: f "/o\\ " " -- "

Cara kerjanya f "/o\\" " -":

b++cycle" "- Menambahkan jumlah spasi tak terbatas setelah buntuk memastikan bahwa Jimmy selalu di atas a -atau ( " -"" - ..."

zip a$b++cycle" "- Ritsleting dua senar secara bersamaan ( [('/',' '), ('o','-'), ('\\',' ')])

(p,q)<-zip a$b++cycle - Untuk setiap pasangan dalam daftar zip

[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']- Menghasilkan daftar 1s, yang panjangnya adalah jumlah pasangan yang memenuhi syarat:

elem p"/o\\"- Karakter di string atas adalah salah satu bagian tubuh Jimmy. (Puas dengan ketiga pasangan dalam contoh ini)

q==' '- Karakter di string bawah adalah spasi. (Puas oleh ('/', ' ')dan ('\\', ' '))

Jadi, pasangan harus menjadi salah satu di mana salah satu bagian tubuh Jimmy berada di atas ruang.

Karena dalam contoh ini, dua pasangan memenuhi kedua kondisi, daftarnya adalah [1,1]

sum[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']- Ambil jumlah dari mereka 1(yaitu panjang daftar), yang dalam contoh ini adalah 2.

sum[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']<2- Periksa apakah jumlah bagian tubuh di atas spasi kurang dari 2. Dalam contoh ini, tidak, jadi Jimmy akan jatuh. :(

Leo Tenenbaum
sumber
Saya hanya berpikir saya akan memberi tahu Anda bahwa jawaban Anda membantu saya mempersingkat jawaban saya sendiri . Jadi terima kasih!
Wheat Wizard
2

C (gcc) , 73 byte

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

Cobalah online!

tsh
sumber
Sarankan index()alih-alihstrchr()
ceilingcat
2

Kotlin, 60 byte

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

Penjelasan:

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
sumber
Selamat datang di Golf Code! Itu tentu jawaban pertama yang sangat bagus.
connectyourcharger
2

/// , 57 byte

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

Cobalah online!

Tambahkan input ke akhir program untuk dijalankan. Mengembalikan string kosong jika Jimmy jatuh dari platform, serangkaian tanda seru sebaliknya.

  • /|/\/\//diganti |dengan //, yang membuat kode menjadi lebih pendek dan lebih mudah dibaca ( |digunakan untuk membatasi setiap penggantian)
  • /\/o\\/J| J/J*/menggantikan Jimmy dengan Juntuk singkatnya dan mengubah ruang di sebelah kiri dia* ke di sebelah kanannya
  • Penggantian berikutnya menghilangkan baris baru.
  • /* /| -/ | //membatalkan *dan dengan ruang di sebelah kiri platform. Jika ada dua ruang atau lebih yang tersisa, Jimmy jatuh ke kiri, dan platform dihapus. Bagian ini juga menghilangkan spasi putih di sebelah kanan platform.
  • /*-/|--/!/membatalkan *dan dengan panjang platform. Jika setidaknya ada dua -kiri, Jimmy tidak jatuh ke kanan, sehingga mereka diganti dengan a !.
  • /-/|*/|J// menghapus setiap karakter yang tersisa yang tidak !
stellatedHexahedron
sumber
1

Japt , 8 byte

Õ·kèS Êz

Cobalah

Perwujudan Ketidaktahuan
sumber
Maaf, tidak melihat ini sebelum memposting milikku tadi malam: \
Shaggy
1

Retina 0.8.2 , 16 byte

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

Cobalah online! Tautan termasuk test suite. Penjelasan:

+`^ (.*¶).
$1

Meskipun masih ada spasi di baris pertama, dan kedua baris masih memiliki lebih dari satu karakter, hapus spasi dan karakter pertama dari baris berikutnya. Catatan: Ini mengasumsikan bahwa tidak ada spasi tambahan setelah Jimmy. Diperlukan +1 byte jika spasi tambahan harus diizinkan.

¶ ?--

Pastikan setidaknya ada dua platform di bawah Jimmy.

Neil
sumber
1

Perl 5 -pl , 42 byte

/o/g;$_=(($_=<>)=~/./g)[-1+pos]eq'-'&&/--/

Cobalah online!

Xcali
sumber
1

Ruby 2.5.3, 44 byte

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

Input diambil sebagai dua array. Jelas bukan pendekatan yang paling ramah golf (lihat jawaban GB), tapi saya suka alasan untuk menggunakan zipfungsi ini.

DaveMongoose
sumber
1

PowerShell , 63..55 53 byte

-1 byte berkat mazzy

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

Cobalah online!

Mengambil input sebagai dua baris.

Belum dibuka:

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
sumber
Hah. Saya tidak pernah menganggap PowerShell bahasa golf yang hebat, tapi saya kira itu sebenarnya tidak terlalu buruk.
connectyourcharger
@connectyourcharger Ini dapat melakukan beberapa hal yang cukup rapi dengan pipa tetapi pasti ada beberapa daerah di mana itu sangat menyebalkan.
Veskah
Saya tidak pernah repot mempelajarinya karena alasan menyakitkan.
Hubungkan charger Anda
1
bagus! mundur dan simpan satu lagi :)
mazzy
1

Python 3.7 , 71 56 Bytes

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

Versi yang sangat sederhana dan terpendek yang dapat saya pikirkan untuk menggunakan pendekatan ini. Input sadalah daftar dua string, yang pertama untuk baris-Jimmy, yang kedua untuk platform. Rangkai karakter-karakter yang berada di atas satu sama lain dan kemudian periksa apakah -ada di bawah bagian Jimmy setidaknya dalam dua contoh.

EDIT: Dikurangi oleh beberapa Bytes berkat Blue!

Michael
sumber
1
Hai, selamat datang di Code Golf! Beberapa hal: Anda mungkin ingin menentukan format input dalam jawaban Anda (sepertinya sharus ada dua daftar, satu untuk jimmy dan satu untuk platform?). Juga, ada beberapa tempat Anda dapat menyimpan byte: alih-alih menjumlahkan daftar, Anda dapat menjumlahkan iterator mentah (menghapus tanda kurung); alih-alih memeriksa >=2, periksa >1; Anda dapat menjumlahkan Truedan Falsemenyukai 1 dan 0, tidak perlu untuk if-else. Akhirnya, sebelum memposting jawaban baru dalam bahasa yang sama, Anda harus melihat yang sebelumnya untuk melihat apakah Anda dapat meningkatkan.
Biru
@ Biru Hai, terima kasih banyak! Dan ya saya akan mengingatnya di masa depan. :)
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

Ini adalah bahasa yang cukup baru dari kreasi saya sendiri - juru bahasa prototipe, dokumentasi, dan program contoh dapat ditemukan di https://github.com/superloach/chevron .

Penjelasan:

  • >^__>^j - ambil jimmy sebagai input TXT
  • ^i<<0 - inisialisasi indeks ke 0
  • ^i<<^i+1 - indeks kenaikan
  • ^h<^i>^j - dapatkan karakter jimmy di indeks
  • ->+2??^h=/ - melompat keluar dari lingkaran di kaki kiri Jimmy
  • ->-3 - kembali ke awal lingkaran
  • >^__>^p - ambil platform sebagai input TXT
  • ^q<^i|2>^p - potong 3 karakter di bawah jimmy
  • ->+2??^q<-- - jika 2 garis putus-putus di bawah jimmy, lompat ke exit yang sebenarnya
  • ><0 - pintu keluar palsu
  • ><1 - pintu keluar yang benar
Superloach
sumber
Saya menyadari bahwa kode saya gagal menangani kasus platform karakter tunggal - versi yang diperbarui akan segera diedit.
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;}

Cobalah online!

Akan jauh lebih pendek ( 75 byte ), jika bisa diasumsikan ada spasi spasi setelah platform.

Steadybox
sumber
95 byte
ceilingcat
0

V , 18 byte

0vt/"_dj.d3lVkp0#x

Cobalah online!

Keluarkan spasi putih hanya jika jimmy jatuh dari platform. Keluarkan sesuatu yang bukan spasi jika jimmy tetap di platform.

tsh
sumber
Tidak menggunakan Ctrl atau Esc di Vim itu lucu.
tsh