Erstellen Sie Ihre eigene Fitnessübung und folgen Sie irl


10

Lassen Sie uns gemeinsam eine Übung machen, sollen wir? Folgen Sie einfach den Bewegungen des Stickman. Welchen Strichmännchen fragst du? Die, die wir erschaffen werden!

Erstellen Sie ein Programm, das eine Zeichenfolgeneingabe zulässt, die nur Ganzzahlen enthält, und die folgenden neun Strichmännchen mit einem Intervall dazwischen ausgibt:

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

Dies führt zu einer Animation, der wir dann entlang irl folgen können.

Hier ist ein Beispiel für die Ausgabe, die erstellt wird, wenn die Eingabe " 123245762" ist:

Geben Sie hier die Bildbeschreibung ein

Einige Regeln:

  • Dies ist mit , sodass der kürzeste Code in Bytes gewinnt
  • Die Eingabe stringenthält nur [1-9]eine Länge mit einer Länge von möglicherweise 2 bis 100 Zeichen **
  • Die Animation muss eine Endlosschleife sein
  • Die Intervallzeit muss 750 ms betragen
  • In der Eingabe sind keine doppelten benachbarten Ganzzahlen zulässig - dies schließt auch die ersten und letzten Ganzzahlen der Eingabe ein (siehe den siebten und den acht Testfall) **

** Wie es bei ungültiger Eingabe fehlschlägt, liegt ganz bei Ihnen, aber es sollte klar sein, dass es fehlschlägt . Es könnte eine Ausnahme auslösen; einfach am Start zurückkehren; Starten Sie Ihren PC neu. lösche seinen eigenen Quell- / Kompilierungscode; Hacke ins Militär und schieße eine Rakete auf den kompilierten GPS-Ort. Ihr Anruf. BEARBEITEN: Es ist nicht erlaubt, eine (korrekte / halbe) Animation einfach als fehlerhafte Eingabe anzuzeigen. Es muss klar sein, dass etwas mit der Eingabe für die fehlgeschlagenen Testfälle unten nicht stimmt. Vielen Dank an @ user81655 , der mich darauf aufmerksam gemacht hat, daher die Bearbeitung.

Unterregeln:

  • Bitte posten Sie das GIF für einen der (nicht fehlgeschlagenen) Testfälle unten in Ihrer Antwort, was Sie mit dem folgenden Programm sehr einfach machen können: screentogif.codeplex.com ( Natürlich ist auch jedes andere Programm zum Erstellen von Gifs zulässig.)
  • Bonuspunkte, wenn Sie die Übung tatsächlich neben der Animation ausführen, wenn sie beendet ist. ;)

Richtige Testfälle:

  1. 123245762
  2. 65
  3. 121234346565879879132418791576

Fehlgeschlagene Testfälle:

  1. 2 // Zu wenige Zeichen
  2. 7282918274959292747383785189478174826894958127476192947512897571298593912374857471978269591928974518735891891723878 // Zu viele Zeichen
  3. 1232405762// Enthält ungültige Eingabe (the 0)
  4. 112212// schlägt wegen der 11und 22Gegenwart fehl
  5. 1232457621 // schlägt wegen des Startens und Führens fehl 1

4
IMO dies ist ein Borderline-Betrogener von diesem
Peter Taylor

1
Übrigens wird davon abgeraten, Änderungen vorzunehmen, nachdem eine Herausforderung veröffentlicht wurde.
Blau

Imo ruiniert die Eingabevalidierung die Herausforderung.
FlipTack

@FlipTack Du hast in der Tat recht. Ich hätte einfach bei der Herausforderung bleiben und davon ausgehen sollen, dass alle Eingaben gültig sind. Dies war meine allererste Frage hier bei PPCG. Etwas zu spät, um es jetzt zu ändern.
Kevin Cruijssen

Antworten:


0

Pyth, 114 Bytes

.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 ausgeben

Probieren Sie es hier aus

(Keine Pause, nicht unendlich)


Hmm, es ist nicht möglich, in Pyth unendlich zurückzukehren / zu werfen oder zu schleifen? Oder dauert es zu viel Bytes / ist zu zeitaufwändig zu machen? (Derzeit funktioniert es für alle korrekten Testfälle sowie für alle fehlerhaften Testfälle gleich. Außerdem wird die Ausgabe für hinzugefügt 0.) Unabhängig davon, danke für den Eintrag. Auf jeden Fall ist eines der unlesbarsten Code-Schnipsel für diesen Eintrag meine Vermutung. :)
Kevin Cruijssen

Der Online-Interpreter spült im Ruhezustand keine E / A, sodass dies nicht bemerkt wird. Sie haben gesagt, Sie wollten eine Endlosschleife, also bin ich mir nicht sicher, was Sie dort fragen. "Wie es fehlschlägt, liegt bei Ihnen" - ich mache dafür undefiniertes Verhalten; Der Code könnte alles tun (obwohl er sich gleich verhalten sollte). Außerdem erwarte ich, dass dies im Vergleich zu einigen möglichen Einträgen relativ lesbar ist
Blue

4

SpecBAS - 387 Bytes

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"

Läuft weiter, bis Sie ESC drücken. Wenn Sie nicht richtig trainieren (falsche Eingabe - in diesem Beispiel eine 0 als einer der Schritte), führt dies zu Fettleibigkeit. Das GIF wiederholt sich, im Programm stoppt es nur an diesem Punkt.

#13ist das SpecBAS-Äquivalent zu \nund ermöglicht es Ihnen, Zeilenvorschub in Zeichenfolgen aufzunehmen.

Geben Sie hier die Bildbeschreibung ein


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

2

JavaScript (ES6), 165 Byte

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 Byte

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

Wie geht dies mit den Regeln zum Ausschließen 0und Duplizieren um?
Morgan Thrapp

4
@ Morgan'Venti'Thrappuccino Ich hatte den Eindruck, dass ungültige Eingaben kein definiertes Verhalten benötigen, da es heißt How it fails in case of invalid input is completely up to you. Ich behandle nur ungültige Eingaben, indem ich eine Animation anzeige. : P Keine der anderen vorhandenen Antworten hat dies ebenfalls überprüft, jedoch die Antwort, die das OP gerade veröffentlicht hat. Vielleicht wollte er, dass wir ungültige Eingaben verarbeiten.
user81655

"Ich behandle nur ungültige Eingaben, indem ich eine Animation anhöre .: P" Lol .. Das ist eine Sichtweise. xD Ich werde die Frage bearbeiten.
Kevin Cruijssen

0

Mathematica, 252 Bytes

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

Wäre schön wenn jemand ein GIF erstellen könnte. In einem Notizbuch ausführen.


0

Python3, 338 Bytes

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 Bytes

Nur für die Lols habe ich versucht, das Programm in Java zu machen. Zugegeben, ich bin ziemlich schlecht im Golfen und Regexes, also kann es höchstwahrscheinlich (viel?) Mehr Golf gespielt werden. Trotzdem ist es hier in Java 7.
Jetzt, fast zwei Jahre später, habe ich den Code in Java 8 fast halbiert. Warum habe ich jemals diese Regeln für die Validierung der Eingabe und die Anforderung eines vollständigen Programms aufgestellt ...>.> Ich hasse es mein vergangenes Ich jetzt ..

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

Erläuterung:

Probieren Sie es online aus. (Nach Ablauf der Zeit nach 60 Sekunden.)

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:
(Hinweis: Altes Gif, da es jetzt eindeutig jdk1.8 + ist.)

Geben Sie hier die Bildbeschreibung ein


Normalerweise sagen wir, dass wir uns Java 7auf diese Version von Java beziehen sollen, da 1.7einige verwirren können, dass es sich um eine Java 1Revision handelt7
GamrCorps

Die lange if-Aussage könnte in so etwas verwandelt werden p(new String[]{" @ ",y,"|@_", ... }[c-49]);if(c==49){p(x);l();}else if(c==53){w();p(x);}else d();. Ich denke auch, dass das Definieren lund wVerschwenden von Zeichen jetzt, da sie nur noch zweimal verwendet werden. Betrachten Sie sstattdessen sein char[] s=a[0].toCharArray(); Alle anderen Operationen damit sind dann viel kürzer.
Alex Meiburg
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.