Створіть власну вправу для тренажерних залів і виконайте далі irl


10

Давайте зробимо вправу разом, чи не так? Просто слідкуйте за рухами палки. Про якого клешника ви питаєте? Той, який ми збираємось створити!

Створіть програму, яка дозволяє вводити рядок лише з цілими числами та виводити наступні дев'ять фігурок з інтервалом між ними:

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

Це призведе до анімації, яку ми зможемо прослідкувати далі IRL.

Ось приклад виводу, створеного, коли вхід " 123245762":

введіть тут опис зображення

Деякі правила:

  • Це позначений , тому найкоротший код у байтах виграє
  • Вхід є stringєдиним, що містить [1-9]довжину, яка може змінюватися від 2 до 100 символів **
  • Анімація повинна бути нескінченним циклом
  • Час інтервалу повинен становити 750 мс
  • Не допускаються дублювання суміжних цілих чисел на вході - це також включає перше і останнє ціле число введення (див. Сьомий та вісім тестових випадків) **

** Як не вдається в разі недійсного введення, повністю залежить від вас, але має бути зрозуміло, що він не працює . Це може кинути виняток; просто повертайтеся на старті; перезавантажте комп'ютер; видаліть власний вихідний / компілюючий код; виламують у військових і стріляють ракетою до складеного GPS-місця. Твій дзвінок. EDIT: заборонено просто відображати (правильну / наполовину) анімацію як невдалий вхід. Повинно бути зрозуміло, що щось не так із даними, наведеними нижче, для несправних тестів. Дякуємо @ user81655 за те, що він звернув це до мене, отже, редагування.

Subrules:

  • Будь ласка, опублікуйте gif для одного із (невдалих) тестових випадків, наведених нижче у своїй відповіді, що ви можете зробити дуже легко за допомогою наступної програми: screentogif.codeplex.com (Звичайно, також допускається будь-яка інша програма для створення gif.)
  • Бонусні бали, якщо ви дійсно виконуєте вправу поряд з анімацією, коли вона закінчена. ;)

Правильні тести:

  1. 123245762
  2. 65
  3. 121234346565879879132418791576

Невдалі тести:

  1. 2 // Занадто мало символів
  2. 7282918274959292747383785189478174826894958127476192947512897571298593912374857471978269591928974518735891891723878 // Занадто багато символів
  3. 1232405762// Містить недійсний вхід (the 0)
  4. 112212// Невдача через 11і 22теперішнє
  5. 1232457621 // Виходить з ладу через стартовий і ведучий 1

5
IMO - це прикордонний обхід цього
Пітер Тейлор

1
BTW, внесення змін після публікації виклику не рекомендується.
Блакитний

imo перевірка вводу руйнує виклик.
FlipTack

@FlipTack Ти справді маєш рацію. Я повинен був просто продовжувати виклик і припускати, що всі дані є дійсними. Це було моє найперше запитання тут щодо PPCG. Хоча трохи пізно, щоб змінити це зараз.
Kevin Cruijssen

Відповіді:


0

Pyth, 114 байт

.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

Спробуйте тут

(Без пауз, нескінченних)


Гм, не можна нескінченно повертатись / кидати чи петлювати в Pyth? Або це займе занадто багато байтів / це занадто багато часу, щоб зробити? (В даний час він працює однаково для всіх правильних тестів, а також для всіх несправних тестів. А також додає у висновку для 0.) Незалежно, дякую за запис. Очевидно, один із найбільш нечитаних фрагментів коду для цього запису - моя здогадка. :)
Кевін Круїссен

Онлайн-перекладач під час сну не вмиває IO, тому його не помічають. Ви сказали, що хочете нескінченного циклу, тому я не впевнений, що ви там просите. "Як це не вдасться, залежить від вас" - я роблю для цього невизначену поведінку; код може зробити що завгодно (навіть якщо він ДОЛЖЕН би поводитись так само) Також я очікую, що це буде порівняно з легким для читання, порівняно з деякими можливими записами
Blue

4

SpecBAS - 387 байт

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. Невиконання належних вправ (неправильне введення - у цьому прикладі 0 як один із кроків) призводить до жирності. Цикл GIF, в програмі він просто зупиняється на цій точці.

#13- еквівалент SpecBAS \nі дозволяє включати стрічковий канал у рядки.

введіть тут опис зображення


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

2

JavaScript (ES6), 165 байт

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 байт

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

Як це обробляє правила щодо виключення 0та копій?
Морган Трапп

4
@ Morgan'Venti'Thrappuccino У мене було враження, що недійсні матеріали не потребують певної поведінки, оскільки це говорить How it fails in case of invalid input is completely up to you. Я просто обробляю недійсний ввід, показуючи анімацію. : P Жоден з інших існуючих відповідей цього не перевіряв, проте відповідь, яку тільки що опублікував ОП, це робить, тому, можливо, він хотів, щоб ми обробляли недійсні дані.
користувач81655

"Я просто обробляю недійсні дані, показуючи анімацію.: P" Lol .. Це один із способів дивитися на це. xD Я відредагую питання.
Кевін Кройсейсен

0

Математика, 252 байти

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

Було б добре, якби хтось міг створити GIF. Виконати в зошиті.


0

Python3, 338 байт

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 байт

Тільки для lols я спробував зробити програму на Java. Справді, я дуже поганий у гольфінгу та реджексах, тож, швидше за все, можна пограти в гольф (багато?) Більше. Тим не менш, ось це в Java 7.
Зараз майже два роки пізніше, і я майже вдвічі зменшив код у Java 8. Чому я коли-небудь склав ці правила щодо перевірки введення даних та необхідності повноцінної програми, хоча ...>> Я ненавиджу моє минуле я зараз ..

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

Пояснення:

Спробуйте в Інтернеті. (Після закінчення 60 годин.)

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:
(Примітка: старий gif, оскільки він очевидно jdk1.8 + зараз.)

введіть тут опис зображення


Зазвичай ми говоримо, Java 7що посилаємося на цю версію Java, бо 1.7можна бентежити деяких, хто вважає, що вона Java 1переглядається7
GamrCorps

Довгий, якщо заява може бути перетворена на щось подібне p(new String[]{" @ ",y,"|@_", ... }[c-49]);if(c==49){p(x);l();}else if(c==53){w();p(x);}else d();. Також я думаю, що визначаючи lі wмарнуючи персонажів, тепер вони використовуються лише двічі. Подумайте про те, щоб sнатомість бути char[] s=a[0].toCharArray(); тоді всі інші операції з ним набагато коротші.
Алекс Мейбург
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.