Jimmy platformundan düşecek mi?


29

backstory

Arkadaşım Jimmy ile tanışın:

/o\

Jimmy, platformlarda durmayı seven küçük bir karakter. İşte Jimmy güvenle platformda duruyor:

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

Şimdi, Jimmy'nin iyi bir denge hissi var, böylece platformdan bir ayağını güvenle kaldırabilir:

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

Her ne kadar platformdan iki veya daha fazla vücut parçası ile dursa da düşecek. Bunların ikisi de Jimmy'nin düşeceği örneklerdir:

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

Meydan okuma

Buradaki zorluk, Jimmy'nin platformdan aşağıya düşmeden ayakta durabildiğini belirlemek için Jimmy'nin platformunda ve pozisyonunda bir dize verildiğinde bir program yazmaktır.

  • Giriş: Jimmy'nin ve altındaki platformun konumunu gösteren iki satır. Bu iki ayrı girişten, tek bir girişten veya bir tür diziden olabilir.

    1. İşlevleri ve standart girişi içeren herhangi bir makul biçimde girdi alabilirsiniz. Yalnızca, diliniz diğer girdi yöntemlerini desteklemiyorsa, zor kodlamaya başvurunuz.
  • Çıktı: Boole değerleri true ve false, sırasıyla 1/0 tam sayılarını doğru / false olarak gösterir.

    1. Boolean değeri, Jimmy'nin platformda kalabilmesi veya kalmamasına dayanır - Jimmy platformda kalabiliyorsa doğru, düşecekse yanlış.
  • Platform büyüklüğü keyfi ve irade değiştirilebilir. Programınız bunu hesaba katmalıdır.

    1. Platform, sıfır uzunluk olamaz ve platform tamamlanmalıdır (platformda delik yoktur).

    2. Jimmy, vücut bölümlerinden ikisi platformdan sarkarken düştüğünü unutmayın. Bir vücut kısmı, vücudunun bir ASCII karakteridir.

    3. Platformun sonunda boşluk bırakmak gerekli değildir, ancak programınız her iki durumu da hesaba katmalıdır, platformdan sonra boşluk var ve yok.

  • Yasak olan standart boşluklara dikkat edin.

Test durumları

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

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

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

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

    /o\                    ❌ FALSE
     -

puanlama

Bu , yani en düşük bayt sayısı kazanır.

Liderler Sıralaması

Aşağıdaki widget'ı / snippet'ini genişleterek bu yayının lider tablosunu görüntüleyebilirsiniz. Gönderinizin sıralamada yer alması için # header text, aşağıdaki bilgileri içeren bir başlığa ( ) ihtiyacınız vardır :

  • Dilin adını (virgül ,veya kısa çizgi ile bitirin -), ardından ...

  • Başlığınızda görünecek son sayı olan bayt sayısı.

Örneğin JavaScript (ES6), 72 bytes, geçerli ancak Fortran, 143 bytes (8-bit)bayt sayısı başlığındaki son sayı olmadığı için geçersiz (cevabınız 8 bayt olarak kabul edilecek - bundan faydalanmayın).

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


Jimmy'den sonra boşluk bırakacağını varsayabilir miyiz? Ayrıca, karakter dizilerine izin veriyorsanız, bazı dillerde bunların boşluklarla doldurulması gerekir.
Nick Kennedy,

@NickKennedy İzleyen boşlukları hesaba katmanız veya izleyen boşlukların olmaması. Buna katı kurallar koymuyorum.
connectyourcharger

12
Başlığı " platformun jimmy düşecek " ve "platformda jimmy kalacak " çıktısını almanız gerekir . Bu beklenen davranış mı?
tsh,

6
Test vakalarınızı kopyalayıp yapıştırmalarını kolaylaştırmak için yeniden biçimlendirir misiniz lütfen?
Shaggy,

2
Takas sahtekarlık değerlerine izin verilir mi? (yani, Jimmy düştüğünde çıktı ve bu olmadığında yanlış olur mu?)
Bay Xcoder

Yanıtlar:


20

Jöle , 6 bayt

n⁶Sċ2Ẓ

Çevrimiçi deneyin!

Açıklama:

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
Bazen insanlığın 6 baytta birisinin kendi platformuna düşüp düşmediğini kontrol edebileceğini görmek için ne kadar ileri gittiğini merak ediyorum.
IMustBeSomeone

4
@ IMustBeSomeone, kıyametime bir platformdan düşecek olursam, birinin bana hızlıca söylemesini isterdim!
Shaggy,

18
@Shaggy İnsanların bir girişle zorluklar çıkarmasının her zaman komik olduğunu düşündüm: "X'e fazla zaman harcamak istemediğimiz için, kod mümkün olduğu kadar kısa olmak zorunda." çoğu durumda karşıtlardır. Eğer den ' ye kadar olan bir baytı kaydedebilirsek , performansı önemseyen bir bayt var! ; pO ( n n )O(log(n))O(nn)
Kevin Cruijssen

1
Jelly'i tanımıyorum, ama neden Ssatırlar yerine sütunları toplamı? : S Eğer wiki'ye doğru bakarsam, kod şunları yapar: n⁶her karakterin bir boşluğa eşit olmadığını (yani ['/o\\', ' -'] -> [[1,1,1],[0,1]]); Stoplama listesi (ancak nedense bu, satırlar yerine sütunları toplar .. so [[1,1,1],[0,1]] -> [1,2,1]); ċ22s miktarını saymak; sonucun örtük olarak alınmasından sonra bunun birinci (2 veya 3) olup olmadığını kontrol edin. Ama [[1,1,1],[0,1]]toplamı beklemek isterdim [3,1]..
Kevin Cruijssen

1
@KevinCruijssen , yani başlangıç ​​değeri olan (vektörleştiren) ekleme ile azaltmaya Seşdeğerdir . yapmayı umduğun şeyi yapar. 0;+/Ɗ0§S
Outgolfer Erik,

19

JavaScript (ES6), 38 bayt

Girişi olarak alır (a)(b). veya döndürür .01

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

Çevrimiçi deneyin!

Nasıl?

"o"Jimmy'nin vücudunun orta kısmının ilk ipteki pozisyonuna bakarız ve ikinci ipte aynı ipte bir çizgi olup olmadığını test ederiz.

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

Jimmy'nin bu durumda güvensiz olacağı tek durum tek kişilik bir platformla:

/o\
 -

Bu yüzden ayrıca platformun en az genişliğe sahip olduğundan emin olduk :2

/--/.test(b)

JavaScript (ES6), 36 bayt

Alternatif versiyon, Jimmy'nin altında her zaman kısa çizgiler veya boşluklar olduğunu varsayarsak (yani giriş dikdörtgendir).

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

Çevrimiçi deneyin!

Sayısal bir değere zorlamanın bir boşluk için , bir çizgi için NaN olması gerçeğinden faydalanır .0


Vay. Nasıl çalıştığını açıklayabilir misiniz?
connectyourcharger

@connectyourcharger Bir açıklama ekledim.
Arnauld,

3
Genius! JS cevapları genellikle o kadar kısa değildir.
connectyourcharger


@Oliver başarısız olur"/o\\\n__"
tsh

10

Excel, 67 45 44 bayt

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

Jimmy'i içeri A1bir platformun içine yerleştirin A2.

2 koşul kontrol edildi:

  • Jimmy'nin gövdesi oplatformda mı?
  • Platform sadece daha fazlası -mı?

1
@Keeta İlk beş dakika içindeki düzenlemeler düzenleme geçmişinde gösterilmez.
Fon Monica'nın Davası,

Yaptığım sınırlı testlerde bakınca sizin deðiþebilirler <>için>
Taylor Scott

9

Python 3, 88 43 bayt

Girdi, iki dize içeren bir liste biçiminde verilir: ilk dize ilk satırdır; ikinci dize ikinci satırdır.

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

Çevrimiçi deneyin!

Başka bir sürüm, 43 bayt için bağlama (43'ten daha kısa sürede elde edemedim):

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

Çevrimiçi deneyin!

Jo King'den bir bahşiş sayesinde 42 byte.

Eski versiyon:

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

Sriotchilism O'Zaic sayesinde -2 bayt.

Bu, iki ayrı giriş alarak ve ardından ilgili harfleri eşleştirerek çalışır. Hiçbir karakterin boşluk olmadığı çift sayısını sayar, ardından bu sayı 1'den büyükse True değerini döndürür.


8

Perl 6 , 18 bayt

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

Çevrimiçi deneyin!

İki parametre alır ve Jimmy'nin platformda kalıp kalmayacağına dair bir boolean döndürür. Bu, iki çizgiyi bir araya getirerek ve Jimmy'nin herhangi bir parçasının hala platformda olup olmadığını kontrol ederek çalışır.

Açıklama:

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

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

Çevrimiçi deneyin!

Bunu, aşağıdaki tekniğimi diğer haskell cevabı ile birleştirerek elde ettim .

Haskell , 45 bayt

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

Çevrimiçi deneyin!

Bu sayımlar o 1'den büyüktür sonra kontroller platformunun üzerine ve vücut parçaları (boşluksuz karakterler) sayısının sebebi olmasıdır kapalı biz ziyade vücut parçaları daha platformda vücut parçaları saymak zipWithüst çizgisini kırmak olacak alt uzunluğu ve böylece Jimmy'nin vücut kısımlarını kesebilir. Bu cycle" ", listeyi doldurmak gibi bir şey yapmamızı önlüyor .


1
Eklemeye dönüştürerek 2 bayt azaltamaz mısınız?
cole

1
@cole Yep Ben sadece yorum yaptığında düzenlemeyi yapıyordum :)
Wheat Wizard

4

MathGolf , 6 14 bayt

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

Çevrimiçi deneyin!

Nick Kennedy tarafından sunulan son durumu hesaba katmak için 8 bayt eklenmesi gerekiyordu.

"-o-"Her iki satırın sıkıştırılmış dizesinin bir alt dili olup olmadığını ve ilk giriş satırının ilk karakterin kaldırıldığı sıkıştırılmış dizenin olup olmadığını kontrol eder . Tek değişiklik karakter olarak girdi olduğunu olmak üzere iki ayrı dizeleri olarak girdi Alır /o\\beri \\girişine doğru yol MathGolf bir dizede bir ters eğik çizgi olduğunu.

açıklama

`                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, bu MathGolf cevabımdan daha iyi bir yaklaşım . Araya girdikten sonra, doğrudan "-o-" yi kontrol etmek yerine tekrar 2 numarasına ayırdım .
Kevin Cruijssen


@NickKennedy iyi yakalamak! Kodu nasıl düzeltebileceğimi göreceğim ve iletiyi geçtiğinde güncelleyeceğim. Maalesef muhtemelen birkaç byte ekleyecektir.
maxb,

3

05AB1E (eski) , 9 8 7 bayt

ζðм2ùgp

@ BayXcoder sayesinde -1 byte yaklaşımı ðм2ù.

İki dizenin bir listesi olarak girin.

Yalnızca 05AB1E'nin eski sürümünde çalışır, çünkü ζbir karakter dizisinin yanı sıra 2B karakter listesini de ζaktarabilirken, yeni 05AB1E sürümünde yalnızca 2B karakter listesiyle çalışır.

Çevrimiçi deneyin veya tüm test durumlarını doğrulayın .

Açıklama:

ζ        # 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
Başlığınız afişi kırar, smh :)
connectyourcharger

Ah, muhtemelen her zaman byteskod sayfasına bağladığım için UTF-8'de kodlanmadığını, bunun yerine özel bir kodlama kullandığını bildiğiniz için. ;) İsterseniz kodlamayı başlığın altına koymak için cevabımı düzenleyebilirim, ancak dürüst olmak gerekirse, lider kodunun imho ile başa çıkabilmesi gerekir.
Kevin Cruijssen

05AB1E için özel bir durum eklemek istediğimi hissediyorum - kod sayfasıyla ilgili sorunları olan tek dillerden biri. Yakında gelen-Düzelt.
connectyourcharger

1
Değiştirilmiş bir regex ile gelip mücadele etmek. Şimdilik bu kalıcı bir böcek olacak. Katkıda bulunmak istiyorsanız, işte komut dosyası: github.com/xMikee1/ppcg-leaderboard/edit/master/docs/script.js . Tamamen ayrıştırma baytları yeniden yönlendirmek zorunda kalabilirim.
connectyourcharger

URL'yi https://github.com/Adriandmen/05AB1E/wiki/Codepage?7geçersiz hale getirmeden son numarayı 7 yapacak şekilde URL'yi değiştiremez misiniz ?
LF


3

Dyalog APL Extended, 11 10 8 bayt

21⊥∧⌿⍤<

Çevrimiçi deneyin!

Açıklama:

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 Adám'a teşekkürler.



3

Excel, 36 bayt

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

Jimmy içeride A1, bir platformda A2.

Jimmy'nin konumunu bulur ve platformun 3 baytını alır ve boşlukları keser. Ortaya çıkan platform uzunluğu yeterince uzunsa, Jimmy duruyor.


3

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

A1= Jimmy, A2= platform

-23 bayt. @Wernisch'e teşekkür ederim.

=(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
Kullanmak Can trimyerine len(replace?
Wernisch,

ah! o asla kafamda batmaz. @Wernisch :) Teşekkür haha
remoel

3

/// , 85 93 87 bayt

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

Çevrimiçi deneyin!

Jimmy güvende ise çıkış 1 olur. Aksi takdirde hiçbir şey çıkarmaz. (Unary 1 and 0) /// içinde giriş yapmanın başka bir yolu olmadığı için kodlanmış olması gerekir:

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

Örneğin:

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

( Çevrimiçi deneyin! )

Sonra boşluğa dikkat edin <INPUT HERE>.

Açıklama:

NOT! Açıklama kodu açıklamalardan dolayı çalıştırılamaz. Yorumlar kaşlı ayraçlar içine alınır. Ayrıca, orjinal kod //değiştirildiği yerde bir golf kullanır ~. Bu kod açıklamadan çıkarılmıştır.

/\/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.}

  • Bir hatayı düzeltmek için +8 bayt
  • -6 standart ///golf numarası uygulayarak bayt .

1
Kaynak kodu bazı garip emojilere benziyor. \\ (o) - (o) //
tsh


2

Haskell, 59 bayt

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

Çevrimiçi deneyin!

İşlev şöyle denir: f "/o\\ " " -- "

Nasıl çalışır (için f "/o\\" " -"):

b++cycle" "- bJimmy’nin daima bir -veya daha üstünde olmasını sağlamak için daha sonra sonsuz sayıda boşluk ekler ( " -"" - ..."

zip a$b++cycle" "- İki ipi birlikte sıkıştırır ( [('/',' '), ('o','-'), ('\\',' ')])

(p,q)<-zip a$b++cycle - Sıkıştırılmış listedeki her çift için

[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']- 1Uzunluğu koşulları sağlayan çiftlerin sayısı olan bir s listesi oluşturur :

elem p"/o\\"- En üstteki karakter Jimmy'nin vücut bölümlerinden biri. (Bu örnekte üç çiftin tümü tarafından karşılandı)

q==' '- Alt dizedeki karakter bir boşluktur. (Memnun ('/', ' ')ve ('\\', ' '))

Bu yüzden çift, Jimmy'nin vücut bölümlerinden birinin bir alanın üstünde olduğu yerlerden biri olmalı.

Çünkü bu örnekte, iki çift her iki koşulu da karşıladığından, liste [1,1]

sum[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']- 1Bu örnekte bulunanların toplamını (yani listenin uzunluğu) alın 2.

sum[1|(p,q)<-zip a$b++cycle" ",elem p"/o\\",q==' ']<2- Bir boşluğun üstündeki vücut parçalarının sayısının 2'den az olup olmadığını kontrol edin. Bu örnekte, öyle değil, bu yüzden Jimmy düşecek. :(


Sadece cevabın kendi cevabımı kısaltmama yardım ettiğini bilmeni sağladığımı düşündüm . Çok teşekkürler!
Buğday Sihirbazı,


2

Kotlin, 60 bayt

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

Açıklama:

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

Code Golf'a Hoşgeldiniz! Bu kesinlikle çok güzel bir ilk cevap.
connectyourcharger

2

/// , 57 bayt

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

Çevrimiçi deneyin!

Çalıştırmak için girişi programın sonuna ekleyin. Jimmy platformdan düşerse boş dizeyi, aksi halde bir ünlem işaretini döndürür.

  • /|/\/\//|ile //kodu değiştirir , bu da kodu hem daha kısa hem de okunabilir kılar ( |her değiştirmeyi ayırmak için kullanılır)
  • /\/o\\/J| J/J*/Jimmy'yi Jkısalıkla değiştirir ve solundaki boşluğu *sağındaki sağına değiştirir
  • Bir sonraki değişiklik yeni hatlardan kurtuluyor.
  • /* /| -/ | //*s'yi ve platformun solundaki boşluğu iptal eder . İki veya daha fazla boşluk kaldıysa, Jimmy sola düşüyor ve platform siliniyor. Bu bölüm, platformun sağındaki boşlukları da kaldırır.
  • /*-/|--/!/*s'yi ve platformun uzunluğunu iptal eder . En az iki tane -kaldıysa, Jimmy sağa düşmüyor, bu yüzden a ile değiştiriliyorlar !.
  • /-/|*/|J// kalan her karakteri siler !


1

Retina 0.8.2 , 16 bayt

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

Çevrimiçi deneyin! Bağlantı test paketi içerir. Açıklama:

+`^ (.*¶).
$1

İlk satırda hala bir boşluk olmasına rağmen, her iki satırda hala birden fazla karakter olmasına rağmen, alanı ve sonraki satırın ilk karakterini silin. Not: Bu, Jimmy'den sonra boşluk kalmadığını varsayar. İzleyen alana izin verilmesi gerekiyorsa +1 bayta ihtiyaç duyulur.

¶ ?--

Jimmy'nin altında en az iki platform bulunduğunu kontrol et.



1

Yakut 2.5.3, 44 bayt

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

Girdi iki dizi olarak alındı. Kesinlikle en golf dostu yaklaşım (GB'nin cevabına bakınız) değil, ancak bu zipfonksiyonu kullanmak için herhangi bir bahaneyi seviyorum .


1

PowerShell , 63,57 53 bayt

Mazzy sayesinde -1 bayt

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

Çevrimiçi deneyin!

Girişi iki satır olarak alır.

unrolled:

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. PowerShell'i harika bir golf dili olarak düşünmedim ama sanırım o kadar da kötü değil.
connectyourcharger

@connectyourcharger Boru hattı ile bazı güzel düzgün şeyler yapabilir ama kesinlikle eşek büyük bir ağrı olduğu birkaç alan var.
Veskah

Asla acı çeken sebeplerden dolayı bunu öğrenmek için hiç uğraşmadım.
connectyourcharger

1
Güzel! geri adım
atın


1

Python 3.7 , 71 56 Bayt

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

Çok basit bir versiyon ve en kısa sürede bu yaklaşımı kullanmayı düşünebilirim. Giriş s, birincisi Jimmy-row için birincisi, diğeri platform için bir iki dizgenin listesidir. Üst üste gelen karakterleri -sıkıştırın ve en az iki örnekte Jimmy'nin bir parçasının altında olup olmadığını kontrol edin .

EDIT: Blue sayesinde epeyce Byte azaldı!


1
Merhaba, Code Golf'a hoş geldiniz! Birkaç şey: cevabınıza giriş biçimini belirtmek isteyebilirsiniz (görünüşe sgöre iki liste olmalı, biri jimmy diğeri de platform için?). Ayrıca, baytları kaydedebileceğiniz birkaç yer var: bir liste toplamak yerine, ham yineleyiciyi toplayabilirsiniz (parantezleri çıkarın); kontrol >=2etmek yerine kontrol etmek >1; toplamı Trueve False1 ve 0 gibi, if-else için gerek yok. Son olarak, aynı dilde yeni bir cevap göndermeden önce, gelişip iyileşemeyeceğinizi görmek için önceki sorulara bakmalısınız.
Mavi

@Mavi Merhaba, çok teşekkürler! Ve evet, bunu gelecekte aklımda tutacağım. :)
Michael,

1

Chevron, 84 87 bayt

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

Bu benim kendi yaratıcılığımın oldukça yeni bir dili - prototip tercüman, dökümantasyon ve örnek programlar https://github.com/superloach/chevron adresinde bulunabilir .

Açıklama:

  • >^__>^j - jimmy'yi TXT girişi olarak al
  • ^i<<0 - dizini 0 olarak başlat
  • ^i<<^i+1 - artış endeksi
  • ^h<^i>^j - endeksinde jimmy karakteri olsun
  • ->+2??^h=/ - jimmy sol bacağında döngüden atlamak
  • ->-3 - döngünün başlangıcına geri dönün
  • >^__>^p - platformu TXT girişi olarak alın
  • ^q<^i|2>^p - jimmy altında 3 karakter kesmek
  • ->+2??^q<-- - jimmy altında 2 kısa çizgi varsa, rutubetli çıkışa geçin
  • ><0 - sahte çıkış
  • ><1 - truthy çıkış

Kodumun tek karakterli platform durumlarını yerine getiremediğini biliyorum - güncellenmiş sürüm yakında düzenlenecek.
Superloach



0

V , 18 bayt

0vt/"_dj.d3lVkp0#x

Çevrimiçi deneyin!

Boşluğu yalnızca jimmy platformdan düşerse çıkar. Jimmy platformda kalırsa boş olmayan bir şey çıktı.


Vim'de Ctrl veya Esc kullanmamak çok komik.
tsh
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.