Друкуйте грецький алфавіт!


13

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

Інформація

  1. Грецький алфавіт (столиці): ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
  2. Грецький алфавіт (малі) αβγδεζηθικλμνξοπρστυφχψω

Правила / Вимоги

  • Кожне подання повинно бути повноцінною програмою.
  • Вбудовані для друку грецького алфавіту не дозволяються
  • Застосовуються стандартні лазівки
  • Ви повинні надрукувати саме те, що зображено.

Оцінка балів

Програми оцінюються відповідно до байтів. Якщо ви використовуєте набір символів, відмінний від UTF-8, будь ласка, вкажіть. Постарайтеся отримати найменше байтів з усіх, це !

Тестові справи

./program
==> ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ

./program 1
==> αβγδεζηθικλμνξοπρστυφχψω

./program 'lower'
==> αβγδεζηθικλμνξοπρστυφχψω

./program 123897883421
==> αβγδεζηθικλμνξοπρστυφχψω

./program ""
==> αβγδεζηθικλμνξοπρστυφχψω

greek();
==> ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ

greek("blah");
==> αβγδεζηθικλμνξοπρστυφχψω

greek(123);
==> αβγδεζηθικλμνξοπρστυφχψω

Подання

Щоб переконатися, що ваша відповідь відображається, будь ласка, почніть свою відповідь із заголовка, використовуючи наступний шаблон Markdown:

# Language Name, N bytes

де Nрозмір вашого подання. Якщо ви покращите свій рахунок, ви можете зберегти старі бали у заголовку, прокресливши їх. Наприклад:

# Ruby, <s>104</s> <s>101</s> 96 bytes

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

# Perl, 43 + 2 (-p flag) = 45 bytes

Ви також можете зробити ім'я мови посиланням, яке потім з’явиться у фрагменті таблиць лідерів:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

Таблиця лідерів

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


5
Чи вважається порожній рядок аргументом чи аргументом? Будь ласка, використовуйте пісочницю, щоб отримати зворотній зв'язок, перш ніж розміщувати виклик на головному сайті.
Мего


2
Чи завжди аргумент буде одним аргументом, чи може бути два чи більше аргументів?
Ерік Аутгольфер

1
Kritixi схвалює виклик.
користувач41805

4
Я трохи заплутаний у ваших останніх трьох тестових випадках; вони виглядають як виклики функцій, але правила спеціально вимагають повноцінної програми.
Денніс

Відповіді:


7

05AB1E , 16 байт

Використовує кодування CP-1252 .

24Ý17K913+çJDl¹s

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

Пояснення

24Ý               # push range [0 ... 24]
   17K            # remove 17
      913+        # add 913 to each
          ç       # convert from code point
           J      # join to string
            Dl    # push a lowercase copy
              ¹   # push the input
               s  # swap the top 2 elements of the stack
                  # implicitly display the top of the stack

Ви мали на увазі [0 ... 23]або [0, 24)замість, [0 ... 24]або [0, 24]?
Ерік Аутгольфер

1
@EriktheGolfer Є ще один символ між діапазоном кодів грецького алфавіту.
jimmy23013

@ jimmy23013 О так, я дуже розгубився. Я працюю це іншою мовою, про яку я тут не розповім. Я зараз зобов’язаний зробити це.
Ерік Аутгольфер

8

Рубін, 56 байт

Повна програма. Я не думаю, що відповідь функції / лямбда буде коротшою, ніж для цієї мови.

Дангіт, сигма ς. Ось чому ми не можемо мати приємних речей. І ви теж (невимовний персонаж, який служить заповнювачем для "великих літер" ς)

print *($*[0]?([*?α..?ω]-[?ς]):[*?Α..?Ρ,*?Σ..?Ω])

7
Я думаю, що це друкує додаткову малу
сиґму

1
Тепер він друкує додатковий U + 03A2.
LegionMammal978

5

JavaScript (ES6), 89 83 81 байт

(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*a.length))

Якщо масив символів прийнятний, то для 82 80 78 байт:

(...a)=>[...Array(24)].map((_,i)=>String.fromCharCode(i*1.06+913+32*a.length))

Редагувати: збережено купу байтів завдяки @ETHproductions.


Використання String.fromCharCode(...array)знову коротше:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i+(i>16)+913+32*!!a.length))
ETHproductions

1
А оскільки String.fromCharCodeповерхи, ви можете зберегти ще два байти так:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*!!a.length))
ETHproductions

@ETHproductions Я не можу повірити, що забув використовувати, String.fromCharCode(...)але мені подобається цей i*1.06трюк! На жаль, на сьогоднішній день, наскільки я можу сказати, байт довший.
Ніл

Мені вдалося звести його до (...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])(82).
ETHproductions

Ви можете видалити !!, оскільки буде лише нуль або один аргумент.
ETHproductions

5

Haskell, 114 108 байт

import System.Environment
q[a,b]=[a..b]
f[]=q"ΑΡ"++q"ΣΩ"
f _=q"αρ"++q"σω"
main=f<$>getArgs>>=putStr

Завдяки @xnor за збереження 6 байт

Це може виграти в категорії найдовшого імпорту, якщо нічого іншого ...


Схоже, варто визначитися q[a,b]=[a..b]з використанням 4 рази.
xnor

1
getArgs>>=putStr.fкоротше.
Ørjan Johansen

4

CJam , 16 байт

25,H-ea'α'Α?f+

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

25,H-         e# 0 to 24 excluding 17.
ea'α'Α?       e# If the argument list is truthy (non-empty), alpha, otherwise Alpha.
f+            e# Return characters with each number added to the character code.

Чи можете ви додати пояснення, будь ласка?
XiKuuKy

@XiKuuKy Я так не думаю: /
RGS

1
@RGS Відредаговано. : /
jimmy23013

@ jimmy23013 приємний: -Я просто прокрутив цю відповідь і подумав, що буду коментувати, якщо для нащадків. Не думав, що ти прийдеш і відредагуєш свою відповідь! +1
RGS

3

Пайк, 55 21 20 байт

24Fi16>913s.C)sz!hAl

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

24F          )       -   for i in range(24):
   i16>              -       i > 16
       913s          -      sum(i, ^, 913)
           .C        -     chr(^)
              s      -  sum(^) - created uppercase alphabet
                  Al - [len, lower, upper][V](^)
                 h   -  V + 1
               z!    -   not input()

2

Власне , 62 байти

 "$ù"E"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ"@ƒ.X

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

Оскільки деяких великих алфавітів грецького алфавіту немає в CP437, це рішення кодується в UTF-8 і оцінюється відповідно. Ось шістнадцятковий (з оборотним xxd -r):

00000000: 2022 24c3 b922 4522 ce91 ce92 ce93 ce94   "$.."E"........
00000010: ce95 ce96 ce97 ce98 ce99 ce9a ce9b ce9c  ................
00000020: ce9d ce9e ce9f cea0 cea1 cea3 cea4 cea5  ................
00000030: cea6 cea7 cea8 cea9 2240 c692 2e58 0a    ........"@...X.

Пояснення:

 "$ù"E"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ"@ƒ.X
<space>                               push the number of items present on the stack
 `$ù`E                                select `ù` (lowercase) if the number of items is not 0, else `$` (stringify - does nothing to a string)
      "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ"      push the uppercase Greek alphabet
                                @ƒ    call the selected function
                                  .   print
                                   X  discard

2

Python 3, 80 77 76 байт

import sys;a='ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ';print([a,a.lower()][-len(sys.argv)])

Стара версія:

import sys;a='ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ';print([a,a.lower()][len(sys.argv)-1])

Старіша версія:

import sys;a='ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ';print(a.lower()if len(sys.argv)>1else a)

[a,a.lower()][len(sys.argv)-1]тому що в коментарях зазначається, що завжди буде лише один аргумент.
Значення чорнила

Можна поголити ще один байт [a.lower(),a][-len(sys.argv)].
toriningen

2
Яке кодування ви використовуєте, що це 76 байт?
AdmBorkBork


2

R, 104 99 92 байт

g=function(x)for(i in sprintf("'\\u%04X'",913:937+32*!missing(x))[-18])cat(eval(parse(t=i)))

Гольф на другій версії, яку я мав раніше. Працюйте так само, як і попередня версія.

Дякуємо @JDL за бриття 7 байт!

Старі версії в 104 байти:

У мене є два різних рішення з однаковим числом байтів:

f=function(x){a="ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ";cat(if(missing(x))a else tolower(a))}

Або:

g=function(x)for(i in sprintf("'\\u%04X'",if(missing(x))913:937 else 945:969)[-18])cat(eval(parse(t=i)))

Пояснення:

#First one is trivial
f=function(x){
     a="ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ" #String to print
     #If argument missing, print uppercase else lowercase 
     cat(if(missing(x))a else tolower(a)) 
     }
#Second one more interesting:
g=function(x)
     #Create escaped unicode strings (i. e. "'\\u03B1'" etc.), loop over them...
     for(i in sprintf("'\\u%04X'",if(missing(x))913:937 else 945:969)[-18])
          #...eval the strings
          cat(eval(parse(t=i))) 

Використання:

> f()
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
> g()
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
> f(1)
αβγδεζηθικλμνξοπρστυφχψω
> g(1)
αβγδεζηθικλμνξοπρστυφχψω
> f("a")
αβγδεζηθικλμνξοπρστυφχψω
> g("a")
αβγδεζηθικλμνξοπρστυφχψω

З різних причин, він не працює на R-Fiddle (вона змінюється "в 'за замовчуванням , що робить код видасть помилку) , але ви можете спробувати його на Ideone .


Замінити +'if'(missing(x),0,32)на +32*!missing(x)?
JDL

@JDL Дякую! Не знаю, чому я не думав про це.
планнапус

2

Japt , 21 19 байт

;Ck"rz" c+816+32*NÊ

Перевірте його (без введення)
Тестуйте (введення порожнього рядка)


Пояснення

      :Implicit input.
;C    :The lowercase alphabet.
k"rz" :Remove r & z.
c+    :Map over the charcodes of the string and add...
816+  :    816 plus...
32*NÊ :    32 multiplied by the length of the array of input variables; 0 if no input is supplied, 1 if a single input is supplied.
      :Implicit output of resulting string

1

Scala, 82 байти

print((('Α'to'Ρ')++('Σ'to'Ω')).mkString.map(& =>if(args.size<1)&else&toLower))

Безголівки:

print((('Α'to'Ρ')++('Σ'to'Ω')).mkString.map(s=>if(args.size==0)s else s.toLower))

До жаль, (('Α'to'Ρ')++('Σ'to'Ω'))це Vector[Char], який буде надрукований , як Vector('Α', 'Β', ..., тому він повинен бути перетворений в рядок з mkString.The аргументом mapназивається , &щоб зберегти простір між &else, else&і & toLower.


1

Желе , 21 байт

,⁸Ea32µ24R%18T+912+µỌ

Повна програма

СпробуйтеItOnline! - зверніть увагу, щойно запустіть аргумент, для запуску без аргументу буде потрібно оновлення.

Як?

,⁸Ea32µ24R%18T+912+µỌ - Main link
,⁸                    - pair (,) with left argument (defaults: left=0, ⁸=[])
                            no argument: [0,[]]
                               argument: [argument,argument]
  E                   - all items equal? -> no argument: 0; argument: 1
   a32                - and 32           -> no argument: 0; argument: 32
      µ               - monadic chain separation
       24R            - range(25)        -> [  1,  2,  3,..., 17, 18, 19,..., 25]
          %18         - mod 18           -> [  1,  1,  1,...,  1,  0,  1,...,  1]
             T        - truthy indices   -> [  1,  2,  3,..., 17,     19,..., 25]
              +912    - add 912          -> [913,914,915,...,929,    931,...,937]
                  +   - add the 0 or 32 (lowercase letters are 32 code points higher)
                   µ  - monadic chain separation
                    Ọ - cast to ordinals

1

PowerShell v2 +, 68 байт

(($a=-join([char[]](913..929+931..937))).toLower(),$a)[!$args.count]

Тільки ASCII, але виводиться в UTF-16. Створює char-array з відповідних символів, -joinS разом в рядок, зберігає його в $a. Потім використовує !$args.countяк індекс в кортежі, щоб вивести або $aякщо аргументів немає, або $a.ToLower()якщо є хоча б один аргумент.

PS C:\Tools\Scripts\golfing> .\print-the-greek-alphabet.ps1
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ

PS C:\Tools\Scripts\golfing> .\print-the-greek-alphabet.ps1 ''
αβγδεζηθικλμνξοπρστυφχψω


1

C #, 174 байти

Ледача реалізація, ймовірно, може дуже багато гольфу

class P{static void main(string[] a){System.Console.Write(a.Length>0?"αβγδεζηθικλμνξοπρστυφχψω":"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ");}}


1

PHP, 84 байт

Інтернет-версія

<?=($argc<2?trim:mb_strtolower)("ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ");

PHP, 87 байт

$s="ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ";echo$argc>1?mb_strtolower($s):$s;

gotcha . Ви, здається, якось відсутні. $argc>1на 8 байт коротше isset($argv[1])і порожній не потребує.
Тит


1

APL (розширений діалог) , 26 байт

Нормальний спосіб передавати кілька аргументів програмам APL - це списки. Тож ця програма пропонує такий список, який може мати 0 або 1 аргумент.

'ς΢'~⍨⍳'Ω'×~≢⎕

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

 запит на список аргументів

 підраховується кількість аргументів (0 або 1)

~ заперечуйте це (1 або 0)

'Ω'× "помножити" Омегу на це (1 зберігає великі регістри, 0 складені на малі)

 Усі символи з Α- Ωабо α-ω відповідно

'ς΢'~⍨ видаліть малі та "великі" заключні сигми


1

Braingolf , 24 байти

l?#α:#Α|# 9->[.!@ 1+];

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

Пояснення:

l?#α:#Α|# 9->[.!@ 1+];  Implicit input of args to stack
l                       Push length of stack
 ?                      If last item (length) is != 0..
  #α                    ..Push lowercase alpha
    :                   else
     #Α                 ..Push uppercase alpha
       |                endif
        #<space>        Push 32 (ordinal of a space)
          9-            Subtract 9 (23)
            >           Move last item to start of stack
             [......]   Do-While loop, will run 24 times
              .         Duplicate last item
               !@       Print without popping
                  1     Push 1
                   +    Pop last 2 items (1 and duplicate) and push sum
                     ;  Suppress implicit output


1

Python 3, 78 байт

import sys;a=(len(sys.argv)-1)<<5;print(''.join(map(chr,range(a+913,a+938))))

Пояснення

aє зміщенням 32, коли наводиться аргумент на використання нижнього регістру. 913 - 937 - діапазон значень унікоду для великого алфавіту з великої літери.



0

Python 2, 108 байт

#coding=iso-8859-7
import sys;print'αβγδεζηθικλμνξοπρστυφχψω'if~-len(sys.argv)else'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ'

Можливо, жахливо гольфували :(

І ні, я не можу використовувати A.lower() .

Завдяки 13285 (alexwlchan) за -11 байт.


Це сама версія для гольфу, яку я можу зробити.
Ерік Аутгольфер

Ви можете зберегти 8 байт, пропустивши призначення A,aта просто використовуючи ці рядки безпосередньо в print.
alexwlchan

@alexwlchan Право, я просто не думав про це ... все-таки страшенно гольф, хоча.
Erik the Outgolfer

0

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

Print@{#&,ToLowerCase}[[Length@$ScriptCommandLine]][""<>"Α"~CharacterRange~"Ω"~Drop~{18}]

Сценарій. Просто приймає діапазон символів від Αдо Ω, видаляє U + 03A2 / ς, або звернені до нижнього регістру чи ні, і друкує.



0

JavaScript, 95 байт

95 байт, але всього 71 символ. Байт лічильника . Використовуючи спосіб @Neil визначити, чи передаються аргументи.

(...a)=>'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ'[`to${a.length?'Low':'Upp'}erCase`]()

0

Java 7, 176 байт

class M{public static void main(String[]a){System.out.print(a.length>0?"αβγδεζηθικλμνξοπρστυφχψω":"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ");}}

Java 8, 173 байти

interface M{static void main(String[]a){System.out.print(a.length>0?"αβγδεζηθικλμνξοπρστυφχψω":"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ");}}

0

PHP, 79 байт

for($i=944-32*!--$argc;$i++-9&31;$i+=$i%32==1)echo html_entity_decode("&#$i;");

створює юнікодні html-об'єкти та розшифровує їх. Бігайте з -r.


0

Піп , 21 20 байт

C:913+32*#g+Y,24RM17

Це пам'ятний день. Піп прив’язав побитого желе! 1

1 І програв двом іншим гольфланг, але що б там не було.

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

Пояснення

             ,25      Numbers 0 through 24
                RM17  Remove 17 (ς)
            Y         Yank (to get correct order of operations)
  913                 Char code of capital alpha
      32*#g           32 times number of cmdline args (must be 0 or 1)
     +     +          Add everything up
C:                    Convert to characters (using the compute-and-assign metaoperator to
                        lower the precedence of C)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.