Yunan alfabesini yazdırın!


13

Açıkçası, Yunan alfabesini yazdırmanız gerekiyor. Ama biraz daha ilginç hale getireceğimi düşündüm, bu yüzden bir bükülme var: programınız bir argümanla (herhangi bir şey) çalıştırıldığında, Yunan alfabesini küçük harfle yazmalıdır.

Bilgi

  1. Yunan alfabesi (Başkentler): ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
  2. Yunan alfabesi (Küçük harf): αβγδεζηθικλμνξοπρστυφχψω

Kurallar / Gereksinimler

  • Her başvuru tam bir program olmalıdır.
  • Yunan alfabesini basmak için yerleşik olanlara izin verilmez
  • Standart boşluklar geçerlidir
  • Gösterilenleri tam olarak yazdırmalısınız.

puanlama

Programlar baytlara göre puanlanır. UTF-8'den farklı bir karakter seti kullanıyorsanız lütfen belirtin. Herkesin en az bayt almaya çalışın, bu !

Test senaryoları

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

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

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

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

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

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

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

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

gönderimler

Yanıtınızın göründüğünden emin olmak için lütfen aşağıdaki Markdown şablonunu kullanarak yanıtınızı bir başlıkla başlatın:

# Language Name, N bytes

Ngönderiminizin büyüklüğü nerede . Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:

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

Başlığınıza birden fazla sayı eklemek istiyorsanız (örneğin, puanınız iki dosyanın toplamı olduğu veya yorumlayıcı bayrak cezalarını ayrı olarak listelemek istediğiniz için), gerçek puanın başlıktaki son sayı olduğundan emin olun :

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

Dil adını, daha sonra skor tablosu snippet'inde görünecek bir bağlantı da yapabilirsiniz:

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

Liderler Sıralaması

İşte hem düzenli bir skor tablosu hem de kazananları dile göre gözden geçirmek için bir Yığın Parçacığı.


5
Boş bir dize, bağımsız değişken veya bağımsız değişken içermiyor mu? Ana sitede bir meydan okuma göndermeden önce geri bildirim almak için lütfen Korumalı Alan'ı kullanın.
Mego


2
Argüman daima bir argüman mı olacak yoksa iki veya daha fazla argüman olabilir mi?
Outgolfer Erik

1
Kritixi bu meydan okumayı onaylar.
user41805

4
Son üç test vakan için biraz kafam karıştı; işlev çağrılarına benziyorlar, ancak kurallar özellikle tam bir program istiyor.
Dennis

Yanıtlar:


7

05AB1E , 16 bayt

CP-1252 kodlamasını kullanır .

24Ý17K913+çJDl¹s

Çevrimiçi deneyin!

açıklama

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

Şunu mu demek istediniz [0 ... 23]veya [0, 24)yerine [0 ... 24]ya [0, 24]?
Outgolfer Erik

1
@EriktheGolfer Yunan alfabesi kod noktaları arasında bir karakter daha var.
jimmy23013

@ jimmy23013 Doğru, gerçekten kafam karıştı. Burada söylemeyeceğim başka bir dilde çalışıyorum. Şu an buna bağlıyım.
Outgolfer Erik

8

Yakut, 56 bayt

Tam program. Bir fonksiyon / lambda cevabının bu dil için bundan daha kısa olacağını düşünmüyorum.

Dangit, sigma ς. Bu yüzden güzel şeylere sahip olamayız. Ve sen de, ("büyük harf" için yer tutucu görevi gören değiştirilemez karakter ς)

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

7
Bence bu ekstra küçük harf sigma, ς
Angs

1
Bu artık fazladan bir U + 03A2 yazdırıyor.
LegionMammal978

5

JavaScript (ES6), 89 83 81 bayt

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

Bir karakter dizisi kabul edilebilirse, 82 80 78 bayt için:

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

Düzenleme: @ETHproductions sayesinde bir demet bayt kaydetti.


Kullanımı String.fromCharCode(...array)yine daha kısa:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i+(i>16)+913+32*!!a.length))
ETHproductions 22:16

1
Ve String.fromCharCodekatlar beri , böyle iki bayt kaydedebilirsiniz:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*!!a.length))
ETHproductions

@ETHproductions Kullanmayı unuttuğuma inanamıyorum String.fromCharCode(...)ama bu i*1.06numarayı seviyorum! Ne yazık ki bu kez anlayabildiğim kadarıyla anlamalar bir bayt daha uzun.
Neil

(...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])(82) 'ye indirmeyi başardım .
ETHproductions

!!Yalnızca sıfır veya bir bağımsız değişken olacağından, öğesini kaldırabilirsiniz .
ETHproductions

5

Haskell, 114108 bayt

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

6 bayt tasarruf için @xnor'a teşekkürler

Bu, başka bir şey yoksa en uzun ithalat kategorisinde kazanabilir…


q[a,b]=[a..b]4 kez kullanmak için tanımlamaya değer gibi görünüyor .
xnor

1
getArgs>>=putStr.fdaha kısadır.
Ørjan Johansen

4

CJam , 16 bayt

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

Çevrimiçi deneyin!

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.

Bir açıklama ekleyebilir misiniz lütfen?
XiKuuKy

@XiKuuKy Ben öyle düşünmüyorum: /
RGS

1
@RGS Düzenlendi. : /
jimmy23013

@ jimmy23013 güzel bir: -PI sadece bu cevap kaydırdı ve ben gelecek kuşak için yorum olacağını düşündüm. Gelip cevabınızı düzenleyeceğinizi düşünmemiştim! +1
RGS

3

Pyke, 55 21 20 bayt

24Fi16>913s.C)sz!hAl

Burada deneyin!

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

Aslında 62 bayt

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

Çevrimiçi deneyin!

Bazı büyük Yunan alfabesi CP437'de bulunmadığından, bu çözüm UTF-8 ile kodlanmış ve buna göre puanlanmıştır. İşte bir hexdump (ile tersinir 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.

Açıklama:

 "$ù"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 bayt

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

Eski versiyon:

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

Eski versiyon:

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

[a,a.lower()][len(sys.argv)-1]çünkü yorumlar sadece bir argüman olacağını belirtiyor.
Değer Mürekkebi

Bir bayt daha tıraş edebilirsiniz [a.lower(),a][-len(sys.argv)].
toriningen

2
Bunun 76 bayt olduğunu hangi kodlamayı kullanıyorsunuz?
AdmBorkBork


2

R, 104 99 92 bayt

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

Daha önce sahip olduğum ikinci versiyonda Golf. Önceki sürümle aynı şekilde çalışın.

@JDL'ye 7 baytlık tıraş için teşekkürler!

104 baytta eski sürümler:

Aynı bayt sayısına sahip iki farklı çözümüm var:

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

Veya:

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

açıklamalar:

#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))) 

Kullanımı:

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

Bazı nedenlerden dolayı, R-Fiddle çalışmıyor (değişeceği "için 'kod hata atmak yapar varsayılan olarak), ancak bunu deneyebilirsiniz Ideone .


Değiştir +'if'(missing(x),0,32)ile +32*!missing(x)?
JDL

@JDL Teşekkürler! Neden böyle düşünmediğimi bilmiyorum.
plannapus

2

Japt , 21 19 bayt

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

Test et (giriş yok)
Test et (boş dize girişi)


açıklama

      :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 bayt

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

Ungolfed:

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

Ne yazık ki, (('Α'to'Ρ')++('Σ'to'Ω'))bir olan Vector[Char]olarak basılmış edileceği, Vector('Α', 'Β', ...bunun bir dizeye dönüştürülecek sahiptir, böylece mkStringhayranlarıyla argüman mapdenir &arasındaki boşluk kurtarmak için &else, else&ve & toLower.


1

Jöle , 21 bayt

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

Tam bir program

TryItOnline! - bir kez bağımsız değişken ile çalıştırıldığında, bağımsız değişken olmadan çalıştırmak için yenileme gerekeceğini unutmayın.

Nasıl?

,⁸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 bayt

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

Yalnızca ASCII, ancak UTF-16'da çıktılar. Bir oluşturur char, uygun karakter -array -joindepolar içine bir dizeye araya s $a. Ardından, herhangi bir bağımsız değişken yoksa veya en az bir bağımsız değişken varsa !$args.countçıktı için bir dizin olarak kullanır .$a$a.ToLower()

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

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

1

Python 3, 80 bayt

import sys;print(''.join(chr(x+881+len(sys.argv)*32)for x in range(25)if x!=17))

1

C #, 174 bayt

Tembel uygulama, muhtemelen çok golf yapabilir

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

1

tcl, 73

 puts [expr $argc>0?"αβγδεζηθικλμνξοπρστυφχψω":"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ"]

gösteri


1

PHP, 84 Bayt

Çevrimiçi sürüm

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

PHP, 87 Bayt

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

yakaladım . Bir şekilde yokmuş gibi görünüyorsun. $argc>18 bayttan daha kısa isset($argv[1])ve boş bırakılması gerekmiyor.
Titus


1

APL (Genişletilmiş Dyalog) , 26 bayt

APL programlarına birden fazla argüman iletmenin normal yolu bir listedir. Bu nedenle, bu program 0 veya 1 bağımsız değişkeni olabilen böyle bir liste ister.

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

Çevrimiçi deneyin!

 argüman listesi istemi

 argüman sayısını (0 veya 1)

~ bunu reddet (1 veya 0)

'Ω'× Omega'yı "çarpma" (1 büyük harf, 0 küçük harf)

Sırasıyla Α- Ωveya α-  arasındaki tüm karakterlerω

'ς΢'~⍨ küçük harf ve "büyük harf" son sigmalarını kaldır


1

Braingolf , 24 bayt

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

Çevrimiçi deneyin!

Açıklama:

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 bayt

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

açıklama

aküçük harf aralığını kullanmak için bir argüman verildiğinde, bir ofsettir. 913 ila 937, büyük Yunan alfabesi için unicode değerlerin aralığıdır.



0

Python 2, 108 bayt

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

Çok golf oynadı, belki :(

Ve hayır, kullanamıyorum A.lower() .

-11 bayt için 13285 (alexwlchan) sayesinde.


Bu yapabileceğim en golfçü versiyonu.
Outgolfer Erik

Ödevi atlayarak A,ave yalnızca bu dizeleri doğrudan içinde kullanarak 8 bayt kaydedebilirsiniz print.
alexwlchan

@alexwlchan Doğru, hiç düşünmedim ... yine de çok golf.
Outgolfer Erik

0

Mathematica, 91 bayt

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

Senaryo. Karakter aralığını ' Αe götürür, ΩU + 03A2 /' yi kaldırır ς, ya küçük harfe dönüştürür ya da dönüştürmez ve yazdırır.


0

Perl, 39 + 3 ( -C2bayrak) = 44 42 bayt

 perl -C2 -E 'say map{chr$_+954-!@ARGV*32}-9..7,9..15'

0

JavaScript, 95 bayt

95 bayt, ancak yalnızca 71 karakter. Bayt sayacı . Bağımsız değişkenlerin geçirilip geçirilmediğini belirlemek için @Neil s yöntemini kullanma.

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

0

Java 7, 176 bayt

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

Java 8, 173 bayt

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

0

PHP, 79 bayt

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

unicode html varlıkları oluşturur ve bunların kodunu çözer. İle çalıştırın -r.


0

Pip , 21 20 bayt

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

Bu unutulmaz bir gün. Pip dövülmüş Jelly'i bağladı ! 1

1 Ve diğer iki golfçü kaybetti, ama her neyse.

Çevrimiçi deneyin!

açıklama

             ,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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.