Kendi Spor Egzersizinizi oluşturun ve irl boyunca takip edin


10

Birlikte bir egzersiz yapalım, olur mu? Sadece çöp adamın hareketlerini takip edin. Ne çöp adamý soruyorsun? Yaratmak üzere olduğumuz!

Yalnızca tamsayılar içeren bir dize girişine izin veren ve aralarında bir aralık ile aşağıdaki dokuz çubuk şeklinin çıktısını veren bir program yapın:

 @  \@/ |@_ _@| @/   \@ |@| \@\ /@/
/|\  |   |   |   |   |   |   |   |
/ \ / \ / \ / \ /|\ /|\ / \ / \ / \
 1   2   3   4   5   6   7   8   9

Bu, daha sonra irl boyunca takip edebileceğimiz bir animasyonla sonuçlanacaktır.

Girdi " 123245762" olduğunda oluşturulan çıktıya bir örnek :

resim açıklamasını buraya girin

Bazı kurallar:

  • Bu olarak etiketlenir , bu nedenle bayttaki en kısa kod kazanır
  • Giriş stringyalnızca [1-9]2 ila 100 karakter arasında değişen bir uzunluğa sahip bir içeriktir **
  • Animasyon sonsuz bir döngü olmalıdır
  • Aralık süresi 750 ms olmalıdır
  • Girişte yinelenen bitişik tamsayılara izin verilmez - bu girişin ilk ve son tam sayılarını da içerir (yedinci ve sekiz test senaryosuna bakın) **

** Geçersiz giriş durumunda nasıl başarısız olduğu tamamen size bağlıdır, ancak başarısız olduğu açık olmalıdır . Bir istisna atabilir; sadece başlangıçta geri dönün; PC'nizi yeniden başlatın; kendi kaynak / derleme kodunu silme; askeriye kesmek ve derleme GPS-konuma bir roket vuruyor. Çağrınız. DÜZENLE: Başarısız girdi olarak (doğru / yarı) bir animasyon görüntülenmesine izin verilmez. Aşağıdaki başarısız test vakalarının girdisinde bir sorun olduğu açık olmalıdır. @ User81655 bunu dikkatime sunduğu için teşekkürler , dolayısıyla düzenleme.

Subrules:

  • Aşağıdaki programda çok kolaylaştırabileceğiniz aşağıdaki (başarısız olmayan) test durumlarından biri için gif'i gönderin : screentogif.codeplex.com (Başka herhangi bir gif oluşturma programına da elbette izin verilir.)
  • Eğer bitirdiğinizde animasyon irl ile birlikte egzersiz yaparsanız bonus puan. ;)

Doğru test vakaları:

  1. 123245762
  2. 65
  3. 121234346565879879132418791576

Başarısız test örnekleri:

  1. 2 // Çok az karakter
  2. 7282918274959292747383785189478174826894958127476192947512897571298593912374857471978269591928974518735891891723878 // Çok fazla karakter
  3. 1232405762// Geçersiz giriş ( 0) içeren
  4. 112212// nedeniyle başarısız 11ve 22mevcut
  5. 1232457621 // Başlangıç ​​ve liderlik nedeniyle başarısız oluyor 1

5
IMO bu sınırda bir dupe olan bu
Peter Taylor

1
BTW, bir meydan okuma gönderildikten sonra düzenlemeler yapılması önerilmez.
Mavi

imo giriş doğrulaması zorluğu mahveder.
FlipTack

@FlipTack Gerçekten haklısın. Sadece meydan okumaya devam etmeliydim ve tüm girdilerin geçerli olduğunu varsaymalıydım. Bu benim PPCG ile ilgili ilk sorumdu. Yine de şimdi değiştirmek için biraz geç.
Kevin Cruijssen

Yanıtlar:


0

Pyth, 114 bayt

.V0j@cv.Z"xÚí» À0DW¹NM@+Üñ\">íÂA¸êÄÓw»`3±2þ&'NövfAé8é~0,p'ÆìÞúr_'¥,d!YÈBíéqs"3tv@zb.d.75

GIF Çıktısı

Burada deneyin

(Duraklama yok, sonsuz değil)


Hmm, Pyth'te sonsuza kadar geri dönmek / fırlatmak ya da döngü yapmak mümkün değil mi? Yoksa çok fazla bayt alacak / yapmak çok zaman alıyor mu? (Şu anda tüm doğru test senaryoları için ve aynı zamanda tüm başarısız test vakaları için aynı şekilde çalışır 0. Bu giriş için kesinlikle okunamayan kod parçacıklarından biri benim tahminim. :)
Kevin Cruijssen

Çevrimiçi yorumlayıcı uyku sırasında IO'yu temizlemediğinden fark edilmez. Sonsuz bir döngü istediğini söylemiştin, bu yüzden orada ne istediğini bilmiyorum. "Nasıl başarısız size kalmış" - Bunun için tanımsız davranışlar yapıyorum; kod (aynı davranmalıdır rağmen) bir şey yapabilir Ayrıca ayrıca bazı olası girişleri ile karşılaştırıldığında nispeten okunabilir olmasını bekliyoruz
Mavi

4

SpecBAS - 387 bayt

1 DIM m$=" @"#13"/|\"#13"/ \","\@/"#13" |"#13"/ \","|@_"#13" |"#13"/ \","_@|"#13" |"#13"/ \","@/"#13" |"#13"/|\"," \@"#13" |"#13"/|\","|@|"#13" |"#13"/ \","\@\"#13" |"#13"/ \","/@/"#13" |"#13"/ \"
2 INPUT a$: o=0
3 IF LEN a$<2 OR LEN a$>100 THEN 10
4 FOR i=1 TO LEN a$
5 n=VAL(a$(i))
6 IF n=0 OR n=o THEN 10
7 CLS : ?m$(n): o=n: WAIT 750
8 NEXT i
9 GO TO 4
10 CLS : ?" @"#13"-O-"#13"/ \"#13"FAT"

ESC tuşuna basana kadar döngüyü sürdürür. Düzgün egzersiz yapılmaması (yanlış giriş - bu örnekte adımlardan biri olarak 0) şişmanlığa neden olur. GIF döngüler, programda o noktada durur.

#13SpecBAS eşdeğeridir \nve dizelere satır besleme eklemenize izin verir.

resim açıklamasını buraya girin


1
"FAT": D ......
Adam Varhegyi

2

JavaScript (ES6), 165 bayt

f=s=>{n=s[0];e.textContent=' @ \\@/|@__@|@/  \\@|@|\\@\\/@/'.substr(n*3-3,3)+(n>1?`
 | 
`:`
/|\\
`)+(n<5|n>6?'/ \\':'/|\\');s=s.slice(1)+n;s[0]-n&&setTimeout(f,750,s)}
f("123245762")
<pre id=e>


1

JavaScript (ES6), 210 bayt

s=>setInterval(_=>(c=console).clear(i=0)&c.log(`, @
/|\\
/ \\,\\@/
 |
/ \\,|@_
 |
/ \\,_@|
 |
/ \\,@/
 |
/|\\, \\@
 |
/|\\,|@|
 |
/ \\,\\@\\
 |
/ \\,/@/
 |
/ \\`.split`,`[s[i++%s.length]]),750)

Bu, hariç tutma 0ve çoğaltma ile ilgili kuralları nasıl ele alır ?
Morgan Thrapp 06

4
@ Morgan'Venti'Trappuccino, geçersiz girdilerin tanımlanmış davranışa ihtiyaç duymadığı izlenimi altındaydı, çünkü diyor How it fails in case of invalid input is completely up to you. Ben sadece bir animasyon görüntüleyerek geçersiz girdi ele. : P Diğer mevcut cevapların hiçbiri bunu kontrol etmedi, ancak OP'nin verdiği cevap bunu yaptı, bu yüzden belki de geçersiz girişi ele almamızı istiyordu.
user81655

"Ben sadece bir animasyon göstererek geçersiz girdi ele.: P" Lol .. Bu bir bakış açısı. xD Soruyu düzenleyeceğim.
Kevin Cruijssen

0

Mathematica, 252 bayt

i=0;Dynamic[Uncompress["1:eJxTTMoPSuNkYGAoZgESPpnFJcFCQIaCQ4yBoZF+TUwMmFaIiQELx8Q46IMEFGrgwoJA4RqHeCyi8Q41aKICQFEUA2qg5gIlHdCEIeaimyAMcQTEWWj26aO7DQDaqDEh"][[FromDigits[#~StringTake~{i=i~Mod~StringLength@#+1}]]],UpdateInterval->3/4,TrackedSymbols->{}]&

Birisi GIF oluşturabilirse iyi olur. Bir defterde çalıştırın.


0

Python3, 338 bayt

import os,time
p=" @ \n/|\\\n/ \\","\\@/\n | \n/ \\","|@_\n | \n/ \\","_@|\n | \n/ \\","@/ \n | \n/|\\"," \\@\n | \n/|\\","|@|\n | \n/ \\","\\@\\\n | \n/ \\","/@/\n | \n/ \\"
i=input()
for j in range(len(i)):(i[j]in"123456789"and i[j]!=i[(j+1)%len(i)])or exit()
while 1:[[time.sleep(0.75),os.system("clear"),print(p[int(j)-1])]for j in i]

0

Java 8, 663 636 634 631 596 355 354 bayt

Sadece lols için programı Java'da yapmaya çalıştım. Kuşkusuz golf ve regexes oldukça kötüyüm, bu yüzden daha çok golf olabilir (çok?). Yine de, burada Java 7'de.
Şimdi neredeyse iki yıl sonra ve neredeyse Java 8 kodunu yarıya indirdim. geçmiş kendiliğim şimdi ..

interface M{static void main(String[]a)throws Exception{if(!a[0].matches("[1-9]{2,100}")|a[0].matches("(.).*\\1|.*(.)\\2.*"))return;for(;;)for(int c:a[0].getBytes()){c-=48;System.out.printf("%s%n%s%n%s%n",c<2?" @ ":c<3?"\\@/":c<4?"|@_":c<5?"_@|":c<6?"@/ ":c<7?" \\@":c<8?"|@|":c<9?"\\@\\":"/@/",c<2?"/|\\":" | ",c%7>4?"/|\\":"/ \\");Thread.sleep(750);}}}

Açıklama:

Çevrimiçi deneyin. (60 saniye sonra zaman aşımına uğradığında.)

interface M{                     // Class
  static void main(String[]a)    //  Mandatory main-method
      throws Exception{          //    Required throws for the `Thread.sleep`
    if(!a[0].matches("[1-9]{2,100}")
                                 //   Validate 2-100 integers only containing 1-9
       |a[0].matches("(.).*\\1|.*(.)\\2.*")
                                 //   Validate no adjacent duplicated char (with wrap-around)
      return;                    //    If either isn't valid, stop the program
    for(;;)                      //   Loop indefinitely
      for(int c:a[0].getBytes()){//    Inner loop over the characters of the input
        c-=48;                   //     Convert character-code to integer
        System.out.printf("%s%n%s%n%s%n",
                                 //     Print:
          c<2?" @ ":c<3?"\\@/":c<4?"|@_":c<5?"_@|":c<6?"@/ ":c<7?" \\@":c<8?"|@|":c<9?"\\@\\":"/@/",
                                 //      The top part of the stick figure
          c<2?"/|\\":" | "       //      The middle part of the stick figure
          c%7>4?"/|\\":"/ \\");  //      The bottom part of the stick figure
        Thread.sleep(750);}}}    //     Sleep 750 ms

Gif:
(Not: Eski gif, çünkü açıkça jdk1.8 + şimdi.)

resim açıklamasını buraya girin


Genellikle Java 7, Java'nın bu sürümüne, 1.7bazılarının Java 1revizyon olduğunu düşünmek için karıştırabildiğini 7
söyleriz

Uzun if ifadesi böyle bir şeye dönüştürülebilir p(new String[]{" @ ",y,"|@_", ... }[c-49]);if(c==49){p(x);l();}else if(c==53){w();p(x);}else d();. Ayrıca , karakterleri tanımlamanın lve wboşa harcadığını düşünüyorum , şimdi sadece iki kez kullanılıyorlar. sBunun yerine izin vermeyi düşünün char[] s=a[0].toCharArray(); onunla tüm diğer işlemler çok daha kısadır.
Alex Meiburg
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.