Морква , 77 51 байт
<th>A^*$v<tr>vl+(^h)*($^F- 1)A"h"S"d"h+(^l)v<table>
(Працюючи над цим, я виявив помилку, що hне працює, і виправив її)
Отримавши кілька байтів, скорочуючи html, а також використовуючи "розділити, приєднатися" замість "замінити"
Спробуйте в Інтернеті!, скористайтеся параметром командного рядка-d щоб переглянути AST (Примітка: для цього використовується новий інтерпретатор вузла, тому старіша версія веб-сайту не може це запустити.)
Таким чином, ця програма приймає 0-індексований вхід і в зворотному порядку через дивну природу Моррока 3 2 друкуючи 3 × 4 таблиці.
Запускайте програму так, ./carrot -f prog.carrot input.txt
В основному створюється рядок заголовка, потім дані рядки на іншій комірці саду (2D стрічка) і об'єднують їх разом.
Морква працює на 2D стрічці, яку називають садовою. Кожна комірка в саду складається з трьох режимів стека, string, float, масив. Для кожного режиму є значення, яке називається "стек" (примітка: неправильне значення). Ці стеки починаються порожніми. Коли комірка знаходиться в певному режимі, наступні команди впливатимуть на стек, який відповідає цьому режиму, наприклад, у плаваючому режимі, операції впливатимуть на поплавок стека. І звичайно, є команди для перемикання між режимами. Режими важливі, оскільки кожен оператор може бути перевантажений для кожного режиму та кожного типу аргументів.
Крім того, є два додаткові режими (вони впливають лише на команди, а не на стек безпосередньо), звичайний режим і режим каретки. Нормальний режим працює нормально, де є оператори, які беруть аргументи і безпосередньо впливають на стек. У режимі карети (майже) кожен символ трактується буквально як рядок, а згодом попередньо додається / додається відповідно до стеку. Режим каретки запускається / закінчується доглядом (додавати) або знизу (попередньо).
Морква починається в осередку на саду, в режимі стека-рядка та в режимі каретки.
Починаючи в режимі каретки, рядок <th>Aдодається до спочатку порожнього стека. Потім слід *команда, що дублює його $, введення, рази. Потім <tr>додається до стека-рядка за допомогою нижньої карети v. Це створює рядок заголовка таблиці.
Для створення рядків даних ми копіюємо заголовок до іншої комірки. lпереміщує IP в праву порожню клітинку і +додає (^h)рядок у комірці зліва (по суті, копіюючи її в комірку праворуч). ()запускає підзарядку, нову програму «Морква» майже з тією ж стрічкою та ^виходить із режиму каретки, щоб ми могли hотримати рядок у лівій комірці. Потім це *дублюється ($^F- 1)наступним входом мінус 1 рази.
Ще в правій комірці Aвстановлює масив цієї комірки на її складання, розділене на "h". Sприєднується до масиву стека by "d"і встановлює рядок стека до цього значення. A"h"S"d"насправді просто замінює hs на ds для формування рядків даних. Теперh переходимо до лівої вихідної комірки.
Тепер ми додаємо рядок стека комірки праворуч до цієї комірки, використовуючи +(^l). Залишилося лише додати <table>тег, тому ми робимо це, попередньо vдодавши його.