Рядок, стовпчик, діагональ, блок


13

Напишіть квадратний блок коду з N символів у ширину та N символів у висоту для деякого додатного цілого числа N.

Наприклад, ваш N може бути 5, а блок виглядає так:

ThisI
sMy5B
y5Cod
eBloc
kOkay

Цей блок повинен поводитись так:

  1. Коли витягнутий верхній рядок і запустити як програму, точний текст rowпотрібно надрукувати для stdout.

    Наприклад, ThisIдрукував би row.

  2. Коли витягнутий лівий стовпчик і запустити як програму, точний текст colпотрібно надрукувати для stdout.

    Наприклад, Tsyekдрукував би col.

  3. Коли головна діагональ з верхнього лівого та нижнього правого кутів витягується та виконується як програма, точний текст diaпотрібно надрукувати для stdout.

    Наприклад, TMCoyдрукував би dia.

  4. Коли весь блок запускається як програма, включаючи нові рядки (з необов'язковим останнім рядком), точний текст blkповинен бути надрукований для stdout.

    Наприклад,

    ThisI
    sMy5B
    y5Cod
    eBloc
    kOkay
    

    надрукував би blk.

Деталі

  • Усі чотири програми виконуються в одній мові програмування.
  • Символи N 2 у вихідному блоці можуть бути будь-якими, крім термінальних рядків .
  • Якщо у вашій мові немає штриху, ви можете використовувати інший поширений метод виводу. Він повинен бути однаковим методом для всіх чотирьох програм.

Виграє подання, оригінальний блок якого містить найменше чітких символів (не рахуючи нових рядків). Tiereaker переходить до уявлення з меншим N.


Зважаючи на те, що напевно є рішення в езотеричній мові з двома символами, я думаю, що це стане рішенням видавити це на найменший Н.
xnor

@xnor Напевно. Хоча однозначна відповідь Ленгуага не виходить із сфери можливості. Тим не менш, цей метод оцінювання є більш цікавим, ніж перший найменший виграш N.
Хобі Кальвіна

Як може працювати Lenguage, враховуючи, що програми рядків і стовпців мають однакову довжину?
xnor

@xnor Ах, ти маєш рацію. Це не спрацювало б.
Захоплення Кальвіна

Чи можуть неблокові програми також закінчуватись новим рядком?
jimmy23013

Відповіді:


6

> <> (Риба) , 3 унікальних символи (N = 2000)

Код використовує 1та -розміщувати довільні числа на стеці та p(само-) змінювати код на основі 3 найкращих чисел у стеку. Наприклад, розміщення !позиції 0 0виглядатиме як 003b*pу звичайному> <> і з p1-цим стає 111-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1--11-11-p.

Після модифікації вказівник інструкції (IP) обертається навколо коду і запускає модифіковану частину. У випадку "блоку" IP переспрямовується для подальшої модифікації (потім перенаправляється назад), щоб відрізнятись від випадку "рядок". У випадку "рядок" відбувається те саме два перенаправлення, але між ними немає коду, щоб вони не мали ефекту.

Остаточні згенеровані коди для 4-х випадків (опускаючи незмінені p1-частини):

row:      "wor"\ooo;

column:   "loc"ooo;

diagonal: "dia"ooo;

block:    "wor"\"klb"ooo;

Розмір коду - 4 Мб, і код доступний тут . (Немає труднощів із його запуском.)

Програма генератора python3 доступна тут .


14

CJam, 13 12 унікальних символів, N = 5

"row"
cd;"a
oaiaa
l"aa;
"blk"

Як прямо вперед, як це стає

ОНОВЛЕННЯ : Перетворений простір на a(не в цьому випадку), як вказав Runner112

Спробуйте його онлайн тут


2
Кожен простір можна перетворити на персонаж, як aби звести унікальну кількість символів до 12, правда?
Runer112

@ Runer112 Чорт! Дякую за пораду!
Оптимізатор

8

Баш, 19 унікальних символів, N = 19

trap echo\ row exit
t=t trap exit      
t=t echo blk       
exit               
=                  
t    e             
      c            
e      h           
c       o          
h                  
o         d        
           i       
c           a      
o                  
l                  
  • Перший ряд є trap echo\ row exit. Це призводить echo rowдо виконання, коли сценарій виходить (лише перший рядок)
  • Перша колонка є ttt=t echo col
  • Діагональ є t=tt echo dia
  • Повний блок працює, скасовуючи обробник EXIT, встановлений у першому рядку, а echo blkпотім виходить.

1
Ви можете використовувати малі регістри, exitщоб зменшити унікальні символи на 4. Ви також можете перемістити exitкоманду в наступний рядок і замінити всі крапки з комою пробілами.
jimmy23013

6

> <> , 14 унікальних символів, N = 10

"wor"\ooo;
     "    
l a  k    
o  i l    
c   db    
"    "    
o    oo   
o    o o  
o    o  o 
;    ;   ;

Досить прямо на 2D мові. Єдина складна частина полягає в тому, що нам потрібно \розрізняти rowі blk.


randomra зазначає, що p1-дасть три рішення, але це буде дуже прикро генерувати (і, ймовірно, не виграє).
Sp3000

3

Brainfuck, 2 унікальних символи, N = 378

З можливим незначним згинанням правил.

Програма є великою, але ось посилання на неї на Pastebin .

В row, colі diaпрограми прості. Вони просто збільшують байтову комірку, поки не буде досягнуто правильного коду ASCII, а потім виведеться. Якщо лист вже пройдений, він збільшується, поки клітина не переповнюється, тому вона може починатись із 0.

У blkпрограмі відбувається незначне згинання правила. Щоб надрукувати "точний текст blk", як задано у виклику, використовуються зворотні простори (ASCII код 8), для чого потрібна консоль / термінал, що відображається, для його підтримки. Щоразу, коли значення друкуються з row/ col/ diaпрограм, я переконуюсь, що вони видаляються, виводячи кілька контрольних кодів. Для спрощення речей я гарантував, що всі значення помилок, що виводяться в одну точку, є частиною діапазону для друку ASCII.


2

C (gcc) , 26 унікальних знаків, N = 29

*w;main(){printf(w?w:"row");}
ww;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;/*;;;;;;;;;;;;;;;;;;;;;;;;
m;;m;;;;;;;;;;;;;;;;;;;;;;;;;
a;;;a;;;;;;;;;;;;;;;;;;;;;;;;
i;;;;i;;;;;;;;;;;;;;;;;;;;;;;
n;;;;;n;;;;;;;;;;;;;;;;;;;;;;
(;;;;;;(;;;;;;;;;;;;;;;;;;;;;
);;;;;;;);;;;;;;;;;;;;;;;;;;;
{;;;;;;;;{;;;;;;;;;;;;;;;;;;;
p;;;;;;;;;p;;;;;;;;;;;;;;;;;;
r;;;;;;;;;;r;;;;;;;;;;;;;;;;;
i;;;;;;;;;;;i;;;;;;;;;;;;;;;;
n;;;;;;;;;;;;n;;;;;;;;;;;;;;;
t;;;;;;;;;;;;;t;;;;;;;;;;;;;;
f;;;;;;;;;;;;;;f;;;;;;;;;;;;;
(;;;;;;;;;;;;;;;(;;;;;;;;;;;;
";;;;;;;;;;;;;;;;";;;;;;;;;;;
c;;;;;;;;;;;;;;;;;d;;;;;;;;;;
o;;;;;;;;;;;;;;;;;;i;;;;;;;;;
l;;;;;;;;;;;;;;;;;;;a;;;;;;;;
";;;;;;;;;;;;;;;;;;;;";;;;;;;
);;;;;;;;;;;;;;;;;;;;;);;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
};;;;;;;;;;;;;;;;;;;;;;;};;*/
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;*w="blk";

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


1

Рубін, 24 унікальні символи, N = 17

trap(0){$><<:row}
rr=a=:blk;%;00000
a0a00000000000000
p00p0000000000000
(000(000000000000
00000000000000000
)00000)0000000000
{000000{000000000
$0000000$00000000
>00000000>0000000
<000000000<000000
<0000000000<00000
:00000000000:0000
c000000000000d000
o0000000000000i00
l;;trap(0){$><<a;
};000000000000;{}

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

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