Вихідний код selfie


20

Мета:

Колись гуру сказав, що ідеальний селфі-код найкраще знімати по діагоналі з лівого верхнього кута. Селфі з кодом майже схоже на Квіне, але обертається на 45 градусів за годинниковою стрілкою. Ваша місія - кодувати програму, яка виводить селфі з кодом.

Правила:

  1. Ви можете використовувати будь-яку мову програмування.
  2. Ваші програми не повинні приймати будь-які дані з файлу, імені файлу, мережі чи іншого.

Обов’язкові критерії:

Selfies - це мотив і передумови, тому пробіли (та інший не видимий вміст, такий як рядки каналів і такі) не вважаються частиною кількості символів. Усі видимі символи можуть бути виведені у правильній обертаній на 45 градусів позиції, тоді як усі невидимі символи не обмежені правильним поверненим положенням на 45 градусів. Як і кольорова палітра для звичайного selfie, обов’язковою для кодового selfie, є те, що вона містить принаймні 16 таких символів: {a-zA-Z0-9}

Приклад:

Якщо цей приклад дійсний вихідний код:

Output abcd
Output efgh
Output ijkl
Output mnop

Приклад коду повинен виводити так:

   O         
  O u
 O u t
O u t p
 u t p u
  t p u t
   p u t
    u t   a  
     t   e b
        i f c
       m j g d
        n k h
         o l
          p

Це гольф-код, найкоротший вихідний код у байтах виграє!


2
16 унікальних [a-zA-Z0-9]?
Оптимізатор

Як би ми оцінили подання в Whitespace?
Sp3000

Пробіл не можливий, оскільки пробіли не враховуються. Так, 16 унікальних [a-zA-Z0-9], а не щонайменше 16 символів.
Plarsen

Цей виклик є упередженим щодо мов, які вимагають перерив рядків у своєму коді. Набагато складніше підтримати мультилінійку для цього завдання.
nderscore

1
@nderscore Можливо, ви з цим правильні. Ну, ми всі тут для задоволення, правда? Зробіть найкраще із ситуації! ;)
Plarsen

Відповіді:


7

Javascript ( ES6 ), 72 байти

16 унікальних буквено-цифрових символів: fjalert0plcgmixn

(f=j=>alert(`(f=${f})(0)`.replace(/./gmi,x=>' '.repeat(j++)+x+'\n')))(0)

mі iпрапори додаються до регулярного виразу, щоб задовольнити мінімальні вимоги до палітри.


4

CJam, 30 28 25 байт

{95c103ic]seeSf.*N*Xmr}_g

Це наче довго через 16 символів від A-Za-z0-9межі.

Це трохи нетривіальний варіант стандартної квінки в CJam. Незабаром додамо пояснення.

ОНОВЛЕННЯ - 2 байти збережено завдяки Мартіну, 3 байти збережено завдяки Деннісу

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


1

Ява, 312

class Z{public static void main(String[]a){String s="class Z{public static void main(String[]a){String s=%c%s%1$c,t;for(int i=0,j;i<326;System.out.println(t+s.format(s,34,s).charAt(i++)))for(j=i,t=%1$c%1$c;j-->0;)t+=' ';}}",t;for(int i=0,j;i<326;System.out.println(t+s.format(s,34,s).charAt(i++)))for(j=i,t="";j-->0;)t+=' ';}}

Насправді є 326 байт, але якщо я правильно зрозумів правила, мені не доведеться рахувати 14 пробілів.

Програма в основному є стандартною Java Quine, плюс багато пробілів.


1

Python 3, 139 символів - 10 пробілів = 129 символів

sjxd='sjxd=%r;[print(" "*i+(sjxd%%sjxd)[i]) for i in range(len(sjxd%%sjxd))]';[print(" "*i+(sjxd%sjxd)[i]) for i in range(len(sjxd%sjxd))]

Оскільки мій код був одним рядком, я повинен був лише надрукувати програму по діагоналі. Моя рядок має дивну назву 'sjxd', щоб мій код міг мати 16 унікальних буквено-цифрових символів.


0

CSS, 69 байт

<style>:before,*{transform:rotate(45deg;display:block;content:'<style>

Помістіть порожню сторінку HTML, щоб уникнути конфлікту з іншими тегами.

Палітра: stylebfortanm45dgiplck(22 символи)


0

MATLAB, 40 байт

Трохи складно з усією рекурсійною справою - як ви друкуєте власний вихідний код, додаючи код до рядка для друку, збільшує розмір самого вихідного коду. Але, що не менше, це зробить наступне:

123456;disp(diag('123456;disp(diag())'))

123456;Трохи є для задоволення необхідних 16 унікальних персонажів. Використовуються наступні:

'()123456;adgips

Вищевказаний код чомусь не працює на Octave, але працює в MATLAB. Нижче наведено вихід:

1                  
 2                 
  3                
   4               
    5              
     6             
      ;            
       d           
        i          
         s         
          p        
           (       
            d      
             i     
              a    
               g   
                (  
                 ) 
                  )

Тепер, якщо ви не заперечуєте над тим, ans=що MATLAB любить ставити, наступне буде працювати на 32 байти :

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