Програма N разів для N-го числа


10

Давши масив додатних цілих чисел Aяк вхід, генеруйте програму, яка при повторенні дляk час, значенняk th-е (1-індексне) значення масиву.

Наприклад, якщо масив є [1,11], вихід повинен бути програмою, яка виводить 1, а при повторенні - двічі 11. Код, як print(end="1");у Python 3 працює:print(end="1"); друкує 1 іprint(end="1");print(end="1"); друкує 11

Виграє найменша сума довжин коду для вирішення всіх тестових випадків. Ваш мета-код повинен вирішити 500 тестових випадків за 60-і, а кожен ваш код рішення повинен повернутися через 10 секунд. Мета-код і код рішення не повинні бути однаковою мовою, але всі рішення, створені вашою метапрограмою, повинні бути однією мовою.

Дані та генератор попередніх тестів можна побачити тут . Через 7 днів сума часу подання (наприклад, 12:34 означає 1234) буде випадковим насінням та створить ще один тестовий випадок як остаточний тестовий випадок.


Кінцеве насіння - 7335 в GMT + 8, тому кінцеві дані випробувань тут


1
Що означає "повторення за k раз"? NewSourceCode = повторити SourceCode k разів? наприклад SourceCode = "ABC", k = 3, то NewSourceCode = "ABCABCABC"?
tsh

print(end="1");повторюється 2 разиprint(end="1");print(end="1");
l4м2

1
Що означає "сума довжин коду"? Чи слід подавати більше однієї програми?
tsh

Ви подаєте одну програму, яка генерує 500 програм
l4m2

2
@Emigna Ні, для кожного списку він генерує одну програму. Скажіть, що програма просто x. Тоді xслід дати перший елемент списку, xxповинен дати другий елемент списку, xxxповинен дати третій тощо.
Кріс

Відповіді:


4

Python 3 , генерує Stax

Тут використовуються різноманітні стратегії. Більшість стратегій застосовуються лише за певних умов, але є одна стратегія, яка завжди є корисною. Наприкінці вибирається найменша програма-кандидат.


from functools import reduce
from math import sqrt

symbols = " !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_abcdefghijklmnopqrstuvwxyz{|}"

def uncycle(arr):
    for size in range(1, len(arr)):
        if all(e == arr[i % size] for (i, e) in enumerate(arr)):
            return arr[:size]
    return arr

def constant(val):
    return "A" if val == 10 else str(val)

def shift(val):
    if not val: return ""
    return constant(abs(val)) + "+-"[val < 0]

def encode(a, offsetMode):
    result = "";
    if offsetMode:
        for i in range(len(a) - 1, 0, -1):
            a[i] -= a[i - 1]
    for i in range(len(a)):
        parts = []
        signBit = (a[i] < 0) * 2
        continuing = (offsetMode and i == len(a) - 1) * 1
        remain = abs(a[i])
        while remain > 22:
            parts.insert(0, remain % 46 * 2 + continuing);
            remain //= 46
            continuing = 1

        parts.insert(0, remain * 4 + signBit + continuing)
        result += "".join(symbols[p] for p in parts)
    
    return result

def cram(arr):
    flat = encode(arr, False)
    offset = encode(arr, True)
    return offset if len(offset) < len(flat) else flat;

def issquare(num):
    root = int(sqrt(num))
    return root * root == num

def isgeometric(arr):
    r = arr[0]
    return all(r ** (i + 1) == e for (i,e) in enumerate(arr))

def generateProgram(arr):
    candidates = []
    rotated = uncycle(arr)
    rotated = rotated[-1:] + rotated[:-1]

    deltas = [b - a for a,b in zip(arr, arr[1:])]

    # single constant strategy
    if len(arr) == 1:
        candidates.append(constant(arr[0]))

    # repeated constant
    elif len(set(arr)) == 1:
        num = arr[0]
        if num == 10: candidates.append("A")
        if num % 2 == 0: candidates.append(constant(num // 2) + "H")
        if issquare(num): candidates.append(str(int(sqrt(num))) + "J")
        candidates.append(constant(num - 1) +  "^")

    # repdigit
    if len(arr) == 2 and 10 < arr[1] == arr[0] * 11 < 100:
        candidates.append(str(arr[0]) + "p")

    # single digits
    if max(arr) < 10:
        candidates.append("".join(map(str, rotated)) + "E|X@")

    # max 10
    if max(arr) == 10 and rotated[0] != 1:
        candidates.append("".join(str(e - 1) for e in rotated) + "E|X@^")

    fns = [
        ("", lambda x: x),
        ("H", lambda x: 2 * x),
        ("^", lambda x: x + 1),
        ("J", lambda x: x * x),
        ("Hv", lambda x: 2 * x - 1),
        ("H^", lambda x: 2 * x + 1),
        ("^H", lambda x: 2 * x + 2),
        ("HJ", lambda x: 4 * x * x),
        ("JH", lambda x: 2 * x * x),
        (":T", lambda x: x * (x + 1) / 2),
        ("|F", lambda x: reduce(lambda a, b: a*b, range(1, x+1))),
        ("J^", lambda x: x * x + 1),
        ("^J", lambda x: x * x + 2 * x + 1),
    ]
    for (stax, fn) in fns:
        if all(fn(i + 1) == e for (i,e) in enumerate(arr)):
            candidates.append("|X" + stax)

    # fixed delta
    if len(set(deltas)) == 1:
        delta = deltas[0]
        start = arr[0] - delta
        if start == 0:
            candidates.append(shift(delta))
        if delta == 1:
            candidates.append("|X" + shift(start))
        elif delta == -1:
            candidates.append("|x" + shift(start))
        elif delta > 1:
            candidates.append("|X" + constant(delta) + "*" + shift(start))
        elif delta < -1:
            candidates.append("|x" + constant(-delta) + "*" + shift(start))

    # geometric series
    if isgeometric(arr):
        candidates.append(constant(arr[0]) + "*")

    # prefix
    if len(arr) == 2 and arr[1] // 10 == arr[0] < 10:
        candidates.append("." + str(arr[1]) + "|X(")

    # suffix
    if len(arr) == 2 and arr[0] % 10 == arr[1] < 10:
        candidates.append("." + "".join(map(str, arr)) + "|X)")

    # uncycled cram
    candidates.append('"' + cram(rotated) + '"!|X@')
    
    candidates.sort(key=len)
    return candidates[0]

while True:
    arr = eval(input())
    prog = generateProgram(arr)
    print(prog)

Спробуйте в Інтернеті!

Оновлення: перевірка. Виконання кожної кратності кожної програми буде забирати багато часу. Можна запускати їх усіх одночасно. Для цього потрібно використовувати невеликий фрагмент коду. Це відповідає за кілька речей.

  1. Зробити неявний вихід, якщо такий є. Зазвичай в кінці програми stax надрукується верхівка стека, якщо не було іншого виводу. Під час запуску декількох програм в одному вихідному файлі це потрібно зробити явно.

  2. Очистіть обидві стеки.

  3. Скидання регістрів. Для цих програм використовується лише реєстр x.

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

|d{P}{zP}?0XLd

Наприклад, вхід [5,2,7,3]виробляє програму stax 3527E|X@. Всі чотири кратності можна перевірити відразу.

3527E|X@
|d{P}{zP}?0XLd

3527E|X@3527E|X@
|d{P}{zP}?0XLd

3527E|X@3527E|X@3527E|X@
|d{P}{zP}?0XLd

3527E|X@3527E|X@3527E|X@3527E|X@
|d{P}{zP}?0XLd

Спробуйте в Інтернеті!

Таким чином можна протестувати всі кратності всієї програми за один і той же час, припускаючи, що нічого не порушується. Це, мабуть, буде найбільшою програмою stax, коли-небудь виконується, якщо всі 500 будуть виконані.


підсумкова оцінка 7862
l4m2

4

Perl 5 -p , генерує Perl 5 -p , накладні витрати 19 17 13

-1 завдяки @Dom Hastings

Оцінка за один вхід буде length of the input + 13. Очевидно, можна поліпшити, створивши програми для саморозпакування для більших входів, але я не буду турбувати.

Наведіть вхідний масив, розділений комами в одному рядку на STDIN.

#!/usr/bin/perl -p
chomp;$_="}{\$_=($_)[\$%++]"

Спробуйте в Інтернеті!

Запустіть зведений nчас виводу без вводу (наприклад, переадресація з / dev / null)

Зразок способу запустити його для введення, 2,6,4,7і отримана програма повторюється 4 рази:

perl -p '}{$_=(3,6,4,7)[$%++]}{$_=(3,6,4,7)[$%++]}{$_=(3,6,4,7)[$%++]}{$_=(3,6,4,7)[$%++]' < /dev/null

Спробуйте в Інтернеті!

Якщо вам не подобається програма, яка намагається прочитати з STDIN, використовуйте цю версію з накладними 17:

#!/usr/bin/perl -p
chomp;$_="1/!say+($_)[\$-++],"

Спробуйте в Інтернеті!

Зразок способу запустити його для введення, 2,6,4,7і отримана програма повторюється 4 рази:

perl -E '1/!say+(2,6,4,7)[$-++],1/!say+(2,6,4,7)[$-++],1/!say+(2,6,4,7)[$-++],1/!say+(2,6,4,7)[$-++],'

Спробуйте в Інтернеті!

Ця версія виходить з ладу після друку необхідного виводу


Я не впевнений, що я цілком отримую бали, але чи ця програма на 1 байт менше s/ /,/g;$_="die say+($_)[\$-++],":?
Дом Гастінгс

@DomHastings Дійсно так і є.
Тон Євангелія

остаточний рахунок 17106
l4m2

3

05AB1E , генерує 05AB1E

¸»“"ÿ"#.g<“ƵƒçJ

Спробуйте в Інтернеті!

Створена програма для введення [5,17,7,13,2]є "5 17 7 13 2"#.g<è.

Набір тестів для [5,17,7,13,2]

Довжина створеної програми - len(input) + 5


1
Щоб було зрозуміло, len(input)це не кількість цілих чисел, а довжина рядка, що містить їх усі. Я спочатку неправильно зрозумів.
рекурсивна

остаточний рахунок
14606

3

APL (Діалог Unicode)

Анонімний префікс лямбда. Повертає тіло програми.

 {
     1=≢⍵:⍕⍵  single element

     (2=≢⍵)∧(⍵[2]=11×⍵[1]):⍕⍵[1]  2, 22 etc.

     1=≢∪⍵:'⊢',⍕⊃⍵  all the same

     (⊢≡⊃×⍳∘≢)⍵:'+',⍕⊃⍵  linear

     ((⌊=⊢)!⍣¯1⊢⊃⍵)∧(1∧.=1↓⍵):'!',⍕!⍣¯1⊃⍵  factorial followed by all 1s

     (⍵[2]∧.=1↓⍵)∧(⍵[1]=10|2⊃⍵):(⍕⊃⍵),'⌈',(⊃⍕2⊃⍵)  b ab ab ab

     e←{∊⍉2 2'+×',⍕¨⍵}¨⍸(⊃⍵)=∘.×⍨⍳10
     b←⍵∘≡¨e(({0::⍬  ⍎⍵}¨,\)⍴∘⊂)¨⍨(≢⍵)
     ∨/b:⊃b/e

     Q←{'''',⍨⍵/⍨1+''''=⍵}
     (5∧.≤⍵)∧(≢⍕⍵)>6+(+/14=⍵)+≢⍵:'{⍺←⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q AV[⍵]  string fallback

     (≢⍕⍵)>9+(+/5=⍵)+≢⍵:'{⍺←¯4+⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q AV[4+⍵]  offset string fallback

     '{⍺←⊃⋄1⌽⍺⊢⍵}',⍕⍵  fallback
 }

Спробуйте в Інтернеті!

Методи

Це досліджує різні методи і повертає перший корисний, з часом повертається до загальноприйнятого методу.

Одиничний елемент

Якщо у списку є лише один елемент, він повертається як є.

2, 22 і т.д.

Однозначну цифру можна просто повторити, щоб генерувати число в 11 разів більше,

Те ж саме

Ми просто повертаємо найправіше ( ) число.

Лінійний

f (n) = k × n послідовностей просто вставити плюс перед першим членом.

Факторний слід за всіма 1

Коли перше число n =! M і наступні числа дорівнюють 1, то !mце рішення, тому що !mn і m!mдорівнює 1 і !1дорівнює 1.

b ab ab ab

Оскільки всі двоцифрові числа є більшими за всі одноцифрові числа, максимум бігу, де передня частина першого числа приклеєна до задньої частини другого числа, є рішенням.

Трирядковий код

Перевірте, чи є яка-небудь формула типу +a×b.

Рядний запасний

Довгі послідовності без чисел під 5 (оскільки 4 - це розрив рядка) можуть бути кодовані як символи SBCS.

Зсув резервного рядка

Якщо є цифри під 5, ми зміщуємо їх на 9, щоб їх уникнути.

Відступати

Просте конкатенація рядків "{⍺←⊃⋄1⌽⍺⊢⍵}"і введення рядка ( ). Наприклад, [3,1,4]повертає тіло програми {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4.

Частина в дужках - це амбівалентна функція, це означає, що вона може бути або функцією префікса, або функцією інфіксації. Таким чином, крайній лівий екземпляр буде працювати в режимі префікса, а всі інші в режимі інфікування. Різниця між режимами полягає в тому , чи має значення лівий аргумент значення. Якщо цього немає, то йому буде призначена функція (спочатку).

Пояснення резервного методу

{} Анонімна лямбда:

⍺←⊃ Якщо немає лівого аргументу ( ), призначіть функцію (першу)

 тоді:

На даний момент наступний код означає дві різні речі залежно від того, чи є це список номерів (виклик інфіксації) або функція "перший" (виклик префікса).

 Якщо є список номерів:

  ⍺⊢⍵ відкиньте лівий аргумент на користь правого аргументу

  1⌽ поверніть цей крок вліво

 Якщо функція "перша":

  ⊢⍵ привести правильний аргумент

   виберіть перший елемент цього

  1⌽ оберніть його на один крок (неадап на скалярі)

Приклад запуску резервного методу

Виконання 3 1 4коду, {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4присвоює функцію "перший" і таким чином повертає перший елемент; 3.

Виконання {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4дозволяє крайньому правому лямбда "захоплювати" лівий 3 1 4як його лівий аргумент, тому має значення, яке відкидається на користь 3 1 4якого потім повертається на один крок вліво і дає 1 4 3результат. Потім це використовується як єдиний аргумент крайньої лівої лямбда, де стає функцією "перший", в результаті чого результат стає першим елементом;1.

Виконання {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4дозволяє крайньому правому лямбда "захопити" середину 3 1 4як його лівий аргумент, який потім відкидається на користь правого аргументу 3 1 4, який при повороті на один крок ліворуч є 1 4 3. Потім він використовується як правий аргумент середньої лямбда разом із 3 1 4лівим лівим аргументом. Лівий аргумент відкидається для правого, який обертається на один крок ліворуч 4 3 1. Потім це стає єдиним аргументом крайньої лівої лямбда, тому стає "першою функцією", повертаючи перший елемент; 4.

Оцінка балів

Коли прийде час тестування за допомогою фактичних даних, використовуйте цей тестовий джгут (пов'язаний із заповненими даними тестування). Тестові випадки йдуть у поле Введення, а вихідний результат буде загальним числом байтів усіх 500 програм разом. (Це також призведе до помилки, але це лише тому, що згодом намагається оцінити Вхід як такий.)


1
остаточний рахунок 14028
l4m2

2

Деревне вугілля

´⎚´§´⪪⪫IA ”y¦ Lυ⊞υω

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. Пояснення:

´⎚´§´⪪

Виведіть буквальний рядок ⎚§⪪.

⪫IA 

Передайте вхідний масив на рядок, з'єднайте з пробілами та друкуйте.

”y¦ Lυ⊞υω

Виведіть буквальний рядок ¦ Lυ⊞υω.

Вихід, наприклад, 5,17,7,13,2є ⎚§⪪5 17 7 13 2¦ Lυ⊞υω. Спробуйте в Інтернеті! Пояснення:

Очистіть полотно, щоб було видно лише останній вихід.

§⪪5 17 7 13 2¦ Lυ

Візьміть довжину попередньо визначеного списку u. Використовуйте це для індексації до списку цілих чисел, розділених на пробіли, та виведення вибраного елемента.

⊞υω

Натисніть фіксовану змінну до попередньо визначеного списку u, щоб наступна копія видала наступний елемент списку.

Загальна довжина виводу = (довжина всіх цілих чисел у всіх списках) + (кількість цілих чисел у всіх списках) + (кількість списків * 9) символів (SBCS).


2

Haskell , породжує Haskell

main = interact $ ("main=print$("++) . (++"!!)$ -1\n +1--")

Спробуйте в Інтернеті! Для першого тесту [5,2,7,3,2,3,15,10,7,2,14,11,16,16,3,3,4,3,8,4]він виробляє наступну програму:

main=print$([5,2,7,3,2,3,15,10,7,2,14,11,16,16,3,3,4,3,8,4]!!)$ -1
 +1--

Спробуйте один раз , удвічі та втричі . Це використовує той же підхід, що і моя відповідь Haskell на те, що я подвоюю джерело, ви подвоюєте вихід .

Довжина кожної згенерованої програми - це довжина списку введення у вигляді рядка плюс 25, таким чином, оцінка для наявних на даний момент тестових вікон становить 12266 + 500 * 25 = 24766. Це показує, що співвідношення код-дані в основному рівне, і я сумніваюся, що можна написати досить малий код декомпресії, який зменшить бал. Це може бути можливим, якщо списки там, де значно більше.


1

Python 2 , генерує Python 2

import sys
a=`input()[::-1]`.replace(' ','')
sys.stdout.write('print%s[-open(__file__,"a").tell()/%s]#'%(a,len(a)+37))

Спробуйте в Інтернеті!

Для введення

[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]

створена програма є

print[29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10][-open(__file__,"a").tell()/98]#

що становить 98 байт.

Адаптований з цього рішення в "Я подвоюю джерело, ви подвоюєте вихід!".

Чорт, дві коротші відповіді вискакували, перш ніж я закінчив писати цю відповідь.


Додатковий новий рядок знаходиться в кінці, завдяки чому він може k
виходити в

Очікувана поведінка - символ "A \ \ n" записується в кінці, якщо виписка не закінчується комою. " Я не знаю, чому TIO показує додатковий новий рядок у stdout.
Бубон

Змінено, printщоб sys.stdout.writeвидалити "щось".
Бубон

остаточний рахунок
30606

1

Java 8, генерує Python 2

interface M{static void main(String[]a){int l=a[0].length();System.out.print("print"+a[0]+"[open(__file__,'a').tell()/"+(l+35+(l+"").length())+"]#");}}

Спробуйте в Інтернеті.

Тобто [3,4,5,6,7] генерує цю програму Python 2:

print[3,4,5,6,7][open(__file__,'a').tell()/48]#

Спробуйте один раз в Інтернеті ;Спробуйте двічі в Інтернеті ; Спробуйте в Інтернеті три рази .

Створена програма Python заснована на @ Mr.Xcoder відповідь «s на третій раз чарівність виклик .

Пояснення:

Код Java 8:

interface M{                    // Class
  static void main(String[]a){  //  Mandatory main-method
    int l=a[0].length();        //   The length of the first argument
                                //   (Note that this is the length of the input as String,
                                //   not the size of the array)
    System.out.print(           //   Print:
      "print"                   //    Literal "print"
      +a[0]                     //    Appended with the argument
      +"[open(__file__,'a').tell()/"
                                //    Appended with literal "[open(__file__,'a').tell()/"
      +                         //    Appended with an integer that is formed by:
       (l                       //     Getting the length we got earlier
       +35                      //     +34 for the rest of the Python 2 code + 1
       +(l+"").length())        //     + the length of the length (<10→1; 10-99→2; etc.)
       +"]#");}}                //    Appended with literal "]#"

Код Python 2:

print                        # Print
 [3,4,5,6,7]                 #  From this array
 [                           #   The `k`'th item,
  open(__file__,'a').tell()  #   where `k` is the length of its own source code
  /                          #   divided by
  48                         #   the length of its own source code (once) + 1
 ]#                          # With a trailing comment, so we can repeat the program

0

Bash, виводить програми в Perl 5

Програму Bash можна назвати подібною script.sh 1,2,3 .

Програму Perl слід викликати -Eпрапором.

echo "shift@a;@a=($1)unless@a;END{say\$a[0];exec'true'}"

Створений perlкод для введення 4,7,8:

shift@a;@a=(4,7,8)unless@a;END{say$a[0];exec'true'}

Досить груба сила. Вилучає елемент масиву ( perlбайдуже, що масив спочатку не існує), встановлює його, якщо він ще не встановлений. Потім він повторює перший елемент масиву в кінці. ( ENDБлок виконується останнім). exec 'true'Завершує роботу програми, так що подальшеEND блоки не виконуються.

Приклад:

#Once
$ perl -E "$(bash script.sh 4,7,8)"
4

#Duplicated twice
$ perl -E "$(bash script.sh 4,7,8)$(bash script.sh 4,7,8)"
7

#Duplicated thrice
$ perl -E "$(bash script.sh 4,7,8)$(bash script.sh 4,7,8)$(bash script.sh 4,7,8)"
8

остаточний рахунок 34106
l4m2

0

Python 2, генерує C ++

Це не збирається бити жодних рекордів, мене в основному цікавило думка про те, чи зможу я зрозуміти, як це зробити :) Використовуйте той факт, що глобальні змінні запускаються перед головними, і так можна нарощувати глобальну змінну, використовуючи #ifdef для забезпечення основного визначено лише один раз.

import sys
print("""#include <stdio.h>
#ifndef A
#define A
int v;
int d[]={""" + sys.argv[1] + """};
struct C{C(){v++;}};
int main(void){ printf("%d",d[v]); }
#else
C c1;
#endif
""")

0

Рунічні чари , породжує руніку

74akw94/85akw
R32B~~?US' Sqq1Ky1Ky
\i<{1[lil1-{S{)]{{1KyB
D'0$'´$$' $     Rl0) ?
R"{Zs$;|1|l;|y"@
"UwR'10<|I+}"$~ /' Su0
       Rakwc4akw/

Спробуйте в Інтернеті!

Вводить введення як розділений пробілом список значень.

Вихід зроблено один раз
Вихід зроблено двічі
Вихід зроблено чотири рази

Використовує команду режиму безперервного читання в режимі читання, ´яку було здійснено 12 січня, і це питання я знайшов 14 числа. Ця команда дозволяє кодувати довільну довжину, оскільки без цієї функції зробити це буде дуже важко (наприклад, 1392її потрібно представити як 1X3+X9+X2+, що потребує додаткового циклу як мінімум); саме проблему, яку я хотів вирішити, коли створив´ команду.

У вихідному коді, |в рядках "{Zs$;|1|l;|y"і "UwR'10<|I+}"замінюються \n(які сидять в сітці , а не змінювати його, так як вони зазвичай було б) з wобрядовими командами: 74akw, 94/Rakw, c4akw, і 85akw. Оригінальними персонажами може бути буквально що завгодно.|був обраний символічним заповнювачем місця, який візуально представляв те, що я хотів. Кілька байтів, збережених (якщо їх не визначено), не потрібно рефлексивно додавати вхідну точку, оскільки wR'10<записує Rв місце, де таке вже існує (позиція 0,1), а потім переходить до заповнення свого стека непотрібним, перш ніж закінчиться мана, після циклу послідовністьU"'i34 .

Отриманий вихідний код працює за допомогою команди write, щоб змінити перший символ у другому рядку до Rперенаправлення ight (таким чином, лише один IP виконує оператор друку), при розумному використанні довжини стека, що виникає в результаті програм з більш високими та високими розмірами, щоб визначити, який індекс читати. Кожен інший IP змінює те саме місце розташування на ту саму інструкцію та припиняється. Все інше залишається невикористаним.

Виконання потоку

Зображення застаріле, але достатньо для пояснення потоку.

Кожне виконання 1Iyпідтримує здатність IP обробляти все більший і більший стек (викликаний lкомандою), розмір якого дозволяє програмі визначити, скільки є копій базового вихідного коду. Фінал 1використовується для збільшення попередньогоl до потрібного числа при обертанні стека (створеного далі), щоб отримати правильне значення. TheZКоманда зводить на немає цього значення так , щоб при обертанні стека в правильному напрямку.

Потім вихідний масив введення кодується, використовуючи режим безперервного зчитування, прокладений 0, щоб уникнути поступового зміни того самого значення для зчитування вихідних входів. Простір NOP необхідний для виходу з режиму безперервного зчитування і дозволити наступним 0 повторно прокласти стек.

Оцінка повинна дорівнювати приблизно 3+v.toString().lengthдля кожного запису масиву v, +23для кожного масиву. Приблизно (2.55*total length of input)або 33837для вибірки, якщо я все робив правильно.

Невеликі зміни були внесені в мою очікувану остаточну програму через побічні ефекти, введені в одній збірці щодо sкоманди, однак це призвело до кращого балу в той же час.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.