ギリシャ語のアルファベットを印刷してください!


11

かなり明らかに、ギリシャ語のアルファベットを印刷する必要があります。しかし、少し面白くしたいと思ったので、ひねりがあります。プログラムを引数(何でも)を指定して実行すると、ギリシャ語のアルファベットが小文字で出力されます。

情報

  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

ヘッダーに複数の数値を含める場合(たとえば、スコアが2つのファイルの合計である場合や、インタープリターフラグのペナルティを個別に一覧表示する場合)、実際のスコアがヘッダーの最後の数値になるようにしてください。

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

言語名をリンクにして、リーダーボードスニペットに表示することもできます。

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

リーダーボード

これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。


5
空の文字列は、引数がある、または引数がないと見なされますか?メインサイトにチャレンジを投稿する前に、サンドボックスを使用してフィードバックを取得してください。
Mego 2016年


2
引数は常に1つの引数ですか、それとも2つ以上の引数がありますか?
Erik the Outgolfer 2016年

1
Kritixiはこの課題を承認します。
user41805

4
最後の3つのテストケースに少し混乱しています。それらは関数呼び出しのように見えますが、ルールは具体的に完全なプログラムを要求します。
Dennis

回答:


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]
Erik the Outgolfer 2016年

1
@EriktheGolferギリシャ語のアルファベットコードポイントの範囲の間にもう1つの文字があります。
jimmy23013

@ jimmy23013そうそう、私は本当に混乱しました。ここでは説明しませんが、別の言語で作業しています。私は今それを約束しています。
Erik the Outgolfer 2016年

7

Ruby、56バイト

完全なプログラム。この言語では、関数/ラムダの答えがこれより短くなるとは思いません。

ダンギット、シグマς。これが私たちが良いものを手に入れることができない理由です。そして、あなたも(「大文字」のプレースホルダーとして機能するレンダリングできない文字ς

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

6
これは余分な小文字のシグマを出力すると思います、
Angs

1
これにより、追加のU + 03A2が印刷されます。
LegionMammal978 2016年

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:床、あなたはそうのような別の2バイト保存することができます(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*!!a.length))
ETHproductions

@ETHproductions使用するのを忘れたなんて信じられませんString.fromCharCode(...)が、私はそのi*1.06トリックが好きです!悲しいことに、私が知る限り、今回は理解が1バイト長くなります。
Neil、

私はなんとか(...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])(82)にそれを降ろしました。
ETHproductions 2016年

!!引数は0または1つしかないため、を削除できます。
ETHproductions 2016年

4

Haskell、114108バイト

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

6バイトを節約してくれた@xnorに感謝

他に何もない場合、これは最長輸入品のカテゴリーで勝つかもしれません…


q[a,b]=[a..b]4回使用することを定義する価値があるようです。
xnor 2016年

1
getArgs>>=putStr.f短いです。
Ørjanヨハンセン


3

Pyke、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でエンコードされ、それに応じてスコアが付けられます。これがhexdumpです(でリバーシブル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]コメントには、引数は1つしかないと記載されているためです。
バリューインク

でさらに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)))

以前持っていた2番目のバージョンでゴルフをする。以前のバージョンと同じように動作します。

7バイトを節約してくれた@JDLに感謝!

104バイトの古いバージョン:

同じバイト数の2つの異なるソリューションがあります。

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 2016年

@JDLありがとう!なぜそれを考えなかったのかわからない。
plannapus


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。引数mapは、との&間のスペースを節約するために呼び出されます。&elseelse&& toLower


1

ゼリー、21 バイト

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

完全なプログラム

TryItOnline!-引数を指定して実行すると、引数を指定せずに実行するには更新が必要になることに注意してください。

どうやって?

,⁸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を-join格納しに、文字列にそれを一緒にね$a。次に、!$args.countタプルへのインデックスとして使用し、$a引数が存在しない$a.ToLower()場合、または少なくとも1つの引数がある場合に出力します。

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

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

1

PHP、84バイト

オンライン版

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

PHP、87バイト

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

ガッチャ。あなたはどういうわけか欠席しているようです。$argc>1よりも8バイト短くisset($argv[1])、空白は必要ありません。
タイタス

1

APL(Dyalog Extended)、26バイト

APLプログラムに複数の引数を渡す通常の方法は、リストを使用することです。したがって、このプログラムは、0または1の引数を持つ可能性のあるリストを要求します。

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

オンラインでお試しください!

 引数リストのプロンプト

 引数の数を集計する(0または1)

~ それを否定する(1または0)

'Ω'× オメガを「乗算」します(1は大文字を保持し、0は小文字に変換します)

 すべての文字からΑ- Ωまたはα- ωそれぞれ

'ς΢'~⍨ 小文字と「大文字」の最後のシグマを削除する


0

Python 2、108 バイト

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

ひどくゴルフをした、多分:(

いいえ、使用できませんA.lower()

-11バイトの13285(alexwlchan)に感謝します。


これは私ができる最もゴルフされたバージョンです。
Erik the Outgolfer 2016年

への割り当てをスキップし、A,aこれらの文字列をで直接使用することで、8バイトを節約できますprint
alexwlchan 2016年

@alexwlchanええ、私はそれを考えていませんでした...それでもひどくゴルフをしました。
Erik the Outgolfer 2016年

0

Mathematica、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

C#、174バイト

怠惰な実装、おそらくそれをたくさんゴルフすることができます

class P{static void main(string[] a){System.Console.Write(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そして他の2つのゴルフランに負けたが、何でも。

オンラインでお試しください!

説明

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

0

tcl、73

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

デモ



0

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

Groovyスクリプト、54 51バイト

((913..937)-930).each{print((char)(args?it+32:it))}

編集する

切り替え913..937it==930?:(913..937)-930


誰かが私に説明してもらえますか、なぜ私の回答は反対票が投じられたのですか?ルールに違反しましたか?
Victor A.

-1

WindowsでのPerl-コンソールはUnicodeをサポートしていません-(スペースを含めて42バイト)

これは私の解決策ではなく、単に上記のDenis Ibaevの PerlソリューションをWindowsコンソールPerlに適合させているだけです

perl -E"say map{chr$_+151-!@ARGV*24}1..24"
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
$ perl -E"say map{chr$_+151-!@ARGV*24}1..24" with one or many arguments
αβγδεζηθικλμνξοπρσςτυφχψ

もちろん、コンソールページのコードはギリシャ語である必要があります。

chcp 737

注:ほんの小さなアイデアです。このページでは、255を超えるUnicodeと思われる文字を使用している回答がいくつかあります。したがって、これらの文字のコーディングには少なくとも2バイト必要です(32ビットのUnicode文字を使用するコンソールを使用している場合は4バイトでしょうか)。コンテストの測定値がBYTESだけではなく、CHARACTERユニット(Unicode、ASCII、またはEBCDICなど)である場合は、より良いのではないでしょうか。それはもっと単純で統一されていませんか?


エラーの以前のコード:小文字のオメガを印刷しません。

修正されたコード(70文字):

perl -E"$i=!@ARGV+0;@a=73;pop@a if$i;say map{chr$_+151-$i*24}1..24,@a"
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
perl -E"$i=!@ARGV+0;@a=73;pop@a if$i;say map{chr$_+151-$i*24}1..24,@a" foo
αβγδεζηθικλμνξοπρσςτυφχψω

「単語の終わり」のシグマ形式(「ς」)を出力することは想定されていませんが、古代ギリシャ語では小文字の最後に通常のシグマ(「σ」)を使用するのはスペルミスです。このパズルのタイトルは「ギリシャ語のアルファベットを印刷する」であり、このキャラクターはその一部であるため、私はそれを印刷することを選択します...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.