그리스 알파벳을 인쇄하십시오!


11

분명히, 당신은 그리스 알파벳을 인쇄해야합니다. 그러나 나는 그것을 조금 더 흥미롭게 만들 것이라고 생각했다. 그래서 꼬임이있다 : 당신의 프로그램이 인수 (무엇이든)로 실행될 때, 그리스 알파벳을 소문자로 출력해야한다.

정보

  1. 그리스어 알파벳 (자본) : ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
  2. 그리스 알파벳 (소문자) : αβγδεζηθικλμνξοπρστυφχψω

규칙 / 요구 사항

  • 각 제출물은 전체 프로그램이어야합니다.
  • 그리스 알파벳을 인쇄하는 내장은 허용되지 않습니다
  • 표준 허점 적용
  • 표시된 내용을 정확하게 인쇄해야합니다.

채점

프로그램은 바이트에 따라 점수가 매겨집니다. UTF-8과 다른 문자 집합을 사용하는 경우 지정하십시오. 모든 사람에게서 최소 바이트를 가져 오십시오. 이것은 !

테스트 사례

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

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

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

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

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

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

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

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

제출물

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

# 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
빈 문자열은 인수가 있거나 인수가없는 것으로 계산됩니까? 기본 사이트에 챌린지를 게시하기 전에 샌드 박스 를 사용하여 피드백을 받으십시오.
Mego


2
인수는 항상 하나의 인수입니까, 아니면 둘 이상의 인수가있을 수 있습니까?
Outgolfer Erik

1
Kritixi가 도전을 승인합니다.
user41805

4
나는 마지막 세 가지 테스트 사례에 약간 혼란스러워합니다. 그것들은 함수 호출처럼 보이지만 규칙은 구체적으로 전체 프로그램을 요구합니다.
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]?
Outgolfer Erik

1
@EriktheGolfer 그리스어 알파벳 코드 포인트 범위에는 다른 문자가 있습니다.
jimmy23013

아 맞다. 정말 혼란 스러웠다. 나는 다른 언어로 작업하고 있는데, 여기서 말하지 않을 것입니다. 나는 지금 그것에 헌신하고 있습니다.
Outgolfer Erik

7

루비, 56 바이트

전체 프로그램. 나는이 언어에 대해 함수 / 람다 답변이 이것보다 짧을 것이라고 생각하지 않습니다.

Dangit, 시그마 ς. 이것이 우리가 좋은 것을 가질 수없는 이유입니다. 그리고 당신도 ( "대문자"의 자리 표시 자 역할을하는 렌더링 할 수없는 캐릭터 ς)

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

6
나는 이것이 여분의 소문자 시그마를 인쇄한다고 생각한다. ς
Angs

1
이제 추가 U + 03A2가 인쇄됩니다.
LegionMammal978

5

자바 스크립트 (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트릭을 좋아합니다 ! 슬프게도 이번에는 내가 알 수있는 한 바이트가 더 길다.
Neil

나는 그것을 (...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])(82) 로 떨어 뜨렸다 .
ETHproductions

!!인수는 0 개 또는 1 개이므로을 제거 할 수 있습니다 .
ETHproductions

4

하스켈, 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

1
getArgs>>=putStr.f더 짧습니다.
Ørjan Johansen 1


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로 인코딩되어 그에 따라 점수가 매겨집니다. 다음은 16 진 덤프입니다 (가역 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

파이썬 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]의견은 오직 하나의 논쟁 만이있을 것이라고 진술하기 때문이다.
Value Ink

을 사용하여 하나 이상의 바이트를 면도 할 수 있습니다 [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)))

내가 이전에 가지고 있던 두 번째 버전에서 골프를 쳤다. 이전 버전과 동일한 방식으로 작업하십시오.

7 바이트를 줄인 @JDL에 감사드립니다!

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 감사합니다! 내가 왜 그런 생각을하지 않았는지 모르겠다.
plannapus

2

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

스칼라, 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'Ω'))A는 Vector[Char]로 인쇄 할 것이다, Vector('Α', 'Β', ...그와 함께 문자열로 변환 할 수있다, 그래서 mkString에 국지적 인 인수 map를 호출 &사이에 공백을 저장 &else, else&하고 & 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적절한 문자 의 배열을 구성하여 -join함께 문자열로 저장하여에 저장합니다 $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

PHP, 84 바이트

온라인 버전

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

PHP, 87 바이트

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

잡았다 . 당신은 어떻게 든 결석 한 것 같습니다. $argc>18 바이트보다 짧고 isset($argv[1])공백이 필요하지 않습니다.
Titus

1

APL (Dyalog Extended) , 26 바이트

여러 인수를 APL 프로그램에 전달하는 일반적인 방법은 목록을 통하는 것입니다. 따라서이 프로그램은 0 또는 1 개의 인수를 가질 수있는 이러한 목록을 프롬프트합니다.

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

온라인으로 사용해보십시오!

 인수리스트를위한 프롬프트

 인수 수를 집계합니다 (0 또는 1)

~ 부정 (1 또는 0)

'Ω'× 오메가에 "곱하기"(1은 대문자, 0은 소문자로 유지)

ΑΩ또는 α–의  모든 문자ω 각각

'ς΢'~⍨ 소문자 및 "대문자"최종 시그마 제거


0

파이썬 2, 108 바이트

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

끔찍한 골프, 아마도 :(

그리고 난 사용할 수 없어 A.lower() .

-11 바이트에 대해 13285 (alexwlchan)에게 감사합니다.


이것은 내가 할 수있는 가장 골프화 된 버전입니다.
Outgolfer Erik

에 대한 할당을 건너 뛰고에서 A,a직접 해당 문자열을 사용하여 8 바이트를 절약 할 수 있습니다 print.
alexwlchan

@alexwlchan 맞아, 난 그냥 생각하지 않았다 ... 그래도 여전히 골프.
Outgolfer Erik

0

수학, 91 바이트

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

스크립트. 문자 범위를에서 ΑΩ바꾸고 U + 03A2 /를 제거 ς하고 소문자로 변환하거나 인쇄하지 않습니다.


0

Perl, 39 + 3 ( -C2플래그) = 44 42 바이트

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

0

자바 스크립트, 95 바이트

95 바이트 (단, 71 자) 바이트 카운터 . @Neil을 사용하여 인수가 전달되는지 판별하십시오.

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

0

자바 7, 176 바이트

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

자바 8, 173 바이트

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

0

파이썬 3, 80 바이트

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

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 그리고 다른 두 골프 랑에게졌다.

온라인으로 사용해보십시오!

설명

             ,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

그루비 스크립트, 54 51 바이트

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

편집하다

에서 전환 913..937it==930?:(913..937)-930


누군가 대답 할 수 있는데 왜 내 대답이 다운 되었습니까? 규칙을 어겼습니까?
Victor A.

-1

Windows에서 Perl-콘솔은 유니 코드를 지원하지 않습니다-(공간을 포함하여 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를 초과하는 유니 코드 인 문자를 사용함을 알 수 있습니다. 따라서 해당 문자는 코딩하는 데 2 ​​바이트 이상이 필요합니다 (32 비트 유니 코드 문자를 사용하는 콘솔을 사용하는 경우 4). 경연 조치가 BYTES가 아닌 CHARACTER 단위 (유니 코드 또는 ASCII 또는 EBCDIC 또는 기타) 인 경우 더 좋지 않습니까? 더 간단하고 통일 되지 않습니까 (이 형용사가 영어로 존재하는지, 프랑스어로 "uniificateur"인지)?


이전 코드 오류 : 소문자 오메가를 인쇄하지 않습니다.

수정 된 코드 (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.