In bảng chữ cái Hy Lạp!


11

Rõ ràng, bạn phải in bảng chữ cái Hy Lạp. Nhưng tôi nghĩ tôi sẽ làm cho nó thú vị hơn một chút, vì vậy có một khúc mắc: khi chương trình của bạn được chạy với một đối số (bất cứ điều gì), nó sẽ xuất ra bảng chữ cái Hy Lạp bằng chữ thường.

Thông tin

  1. Bảng chữ cái Hy Lạp (Capitals): ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ
  2. Bảng chữ cái Hy Lạp (Chữ thường): αβγδεζηθικλμνξοπρστυφχψω

Quy tắc / Yêu cầu

  • Mỗi bài nộp phải là một chương trình đầy đủ.
  • Nội dung để in bảng chữ cái Hy Lạp không được phép
  • Áp dụng sơ hở tiêu chuẩn
  • Bạn phải in chính xác những gì được hiển thị.

Chấm điểm

Các chương trình được tính theo byte. Nếu bạn đang sử dụng một bộ ký tự khác với UTF-8, vui lòng chỉ định. Cố gắng lấy ít byte nhất trong số tất cả mọi người, đây là !

Các trường hợp thử nghiệm

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

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

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

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

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

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

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

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

Đệ trình

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

# Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh chúng qua. Ví dụ:

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

Nếu ở đó bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ phiên dịch), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

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

Bạn cũng có thể đặt tên ngôn ngữ thành liên kết sau đó sẽ hiển thị trong đoạn trích bảng xếp hạng:

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

Bảng xếp hạng

Dưới đây là một Stack Snippet để tạo cả bảng xếp hạng thông thường và tổng quan về người chiến thắng theo ngôn ngữ.


5
Có một chuỗi rỗng được tính là có một đối số hoặc không có đối số? Vui lòng sử dụng Hộp cát để nhận phản hồi trước khi đăng một thử thách trên trang web chính.
Mego


2
Đối số sẽ luôn là một đối số, hoặc có thể có hai hoặc nhiều đối số?
Erik the Outgolfer

1
Kritixi chấp thuận thử thách.
dùng41805

4
Tôi hơi bối rối bởi ba trường hợp thử nghiệm cuối cùng của bạn; Chúng trông giống như các cuộc gọi chức năng, nhưng các quy tắc đặc biệt yêu cầu một chương trình đầy đủ.
Dennis

Câu trả lời:


7

05AB1E , 16 byte

Sử dụng mã hóa CP-1252 .

24Ý17K913+çJDl¹s

Hãy thử trực tuyến!

Giải trình

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

Ý của bạn là [0 ... 23]hay [0, 24)thay vì [0 ... 24]hay [0, 24]?
Erik the Outgolfer

1
@EriktheGolfer Có một nhân vật khác giữa phạm vi các điểm mã bảng chữ cái Hy Lạp.
jimmy23013

@ jimmy23013 Ồ đúng rồi, tôi thực sự bối rối. Tôi đang làm việc với ngôn ngữ khác, mà tôi sẽ không nói ở đây. Tôi cam kết điều đó ngay bây giờ.
Erik the Outgolfer

7

Ruby, 56 byte

Chương trình đầy đủ. Tôi không nghĩ rằng một câu trả lời hàm / lambda sẽ ngắn hơn so với ngôn ngữ này.

Nguy hiểm, sigma ς. Đây là lý do tại sao chúng ta không thể có những điều tốt đẹp. Và bạn cũng vậy, (nhân vật không thể thay thế đóng vai trò giữ chỗ cho "chữ hoa" ς)

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

6
Tôi nghĩ rằng điều này in thêm một sigma chữ thường, ς
Angs

1
Điều này bây giờ in thêm một U + 03A2.
LegionMammal978

5

JavaScript (ES6), 89 83 81 byte

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

Nếu một mảng ký tự được chấp nhận, thì với 82 80 78 byte:

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

Chỉnh sửa: Đã lưu một loạt byte nhờ @ETHproductions.


Việc sử dụng String.fromCharCode(...array)lại ngắn hơn:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i+(i>16)+913+32*!!a.length))
ETHproductions

1
Và kể từ các String.fromCharCodetầng, bạn có thể lưu hai byte khác như sau:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*!!a.length))
ETHproductions

@ETHproductions Tôi không thể tin rằng tôi đã quên sử dụng String.fromCharCode(...)nhưng tôi thích i*1.06thủ thuật đó ! Đáng buồn là sự hiểu biết là một byte dài hơn thời gian này như tôi có thể nói.
Neil

Tôi quản lý để đưa nó xuống (...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])(82).
Sản xuất ETH

Bạn có thể loại bỏ !!, vì sẽ chỉ có 0 hoặc một đối số.
Sản xuất ETH

4

Haskell, 114 108 byte

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

Cảm ơn @xnor vì đã lưu 6 byte

Điều này có thể giành chiến thắng trong danh mục nhập khẩu dài nhất nếu không có gì khác


Có vẻ như nó đáng để xác định q[a,b]=[a..b]sử dụng 4 lần.
xnor

1
getArgs>>=putStr.fngắn hơn
Ørjan Johansen


3

Pyke, 55 21 20 byte

24Fi16>913s.C)sz!hAl

Hãy thử nó ở đây!

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

Trên thực tế , 62 byte

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

Hãy thử trực tuyến!

Do một số bảng chữ cái Hy Lạp viết hoa không có trong CP437, giải pháp này được mã hóa theo UTF-8 và được tính điểm tương ứng. Đây là một hexdump (có thể đảo ngược với 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.

Giải trình:

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

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

Phiên bản cũ:

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

Phiên bản cũ hơn:

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

[a,a.lower()][len(sys.argv)-1]bởi vì các ý kiến ​​nói rằng sẽ chỉ có một đối số.
Mực giá trị

Bạn có thể cạo thêm một byte với [a.lower(),a][-len(sys.argv)].
toriningen

2
Mã hóa nào bạn đang sử dụng mà đây là 76 byte?
admBorkBork


2

R, 104 99 92 byte

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

Chơi golf trên phiên bản thứ hai tôi đã có trước đây. Hoạt động tương tự như phiên bản trước.

Cảm ơn @JDL đã cạo 7 byte!

Các phiên bản cũ ở 104 byte:

Tôi có hai giải pháp khác nhau với cùng số byte:

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

Hoặc là:

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

Giải thích:

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

Sử dụng:

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

Vì một số lý do, nó không hoạt động trên R-Fiddle (nó thay đổi "thành 'mặc định khiến mã bị lỗi) nhưng bạn có thể dùng thử trên Ideone .


Thay thế +'if'(missing(x),0,32)bằng +32*!missing(x)?
JDL

@JDL Cảm ơn! Không biết tại sao tôi không nghĩ về điều đó.
plannapus


1

Scala, 82 byte

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

Ung dung:

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

Đáng buồn thay, (('Α'to'Ρ')++('Σ'to'Ω'))là một Vector[Char], mà sẽ được in như Vector('Α', 'Β', ..., vì vậy nó phải được chuyển đổi sang một chuỗi với mkString.Công lập luận để mapđược gọi là &để tiết kiệm không gian giữa &else, else&& toLower.


1

Thạch , 21 byte

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

Một chương trình đầy đủ

Dùng thử trực tuyến! - lưu ý một khi chạy với một đối số, một làm mới sẽ được yêu cầu để chạy mà không có đối số.

Làm sao?

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

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

Chỉ ASCII, nhưng đầu ra trong UTF-16. Xây dựng một char-array của các ký tự thích hợp, -joinkết hợp nó thành một chuỗi, lưu trữ nó vào $a. Sau đó, sử dụng !$args.countnhư một chỉ mục vào bộ dữ liệu, để xuất ra $anếu không có đối số hoặc $a.ToLower()nếu có ít nhất một đối số.

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

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

1

PHP, 84 byte

Phiên bản trực tuyến

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

PHP, 87 byte

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

gotcha . Bạn dường như vắng mặt. $argc>1ngắn hơn 8 byte so với isset($argv[1])và không nọt cần một khoảng trống.
Tít

1

APL (Dyalog Extended) , 26 byte

Cách thông thường để truyền nhiều đối số cho các chương trình APL là thông qua một danh sách. Vì vậy, chương trình này nhắc nhở cho một danh sách như vậy, có thể có 0 hoặc 1 đối số.

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

Hãy thử trực tuyến!

 nhắc nhở cho danh sách đối số

 kiểm đếm số lượng đối số (0 hoặc 1)

~ phủ nhận rằng (1 hoặc 0)

'Ω'× "nhân" Omega theo đó (1 giữ chữ hoa, 0 lần để viết thường)

 Tất cả các ký tự từ Α- Ωhoặc α- ωtương ứng

'ς΢'~⍨ xóa chữ thường và chữ hoa "chữ hoa"


0

Python 2, 108 byte

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

Chơi golf khủng khiếp, có thể :(

Và không, tôi không thể sử dụng A.lower().

Cảm ơn 13285 (alexwlchan) cho -11 byte.


Đây là phiên bản golf nhất tôi có thể làm.
Erik the Outgolfer

Bạn có thể lưu 8 byte bằng cách bỏ qua phép gán A,avà chỉ cần sử dụng các chuỗi đó trực tiếp trong print.
alexwlchan

@alexwlchan Đúng vậy, tôi chỉ không nghĩ về nó ... mặc dù vậy vẫn chơi golf khủng khiếp.
Erik the Outgolfer

0

Toán học, 91 byte

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

Kịch bản. Chỉ cần lấy phạm vi ký tự từ Αđến Ω, loại bỏ U + 03A2 / ς, chuyển đổi thành chữ thường hoặc không và in.


0

Perl, 39 + 3 ( -C2cờ) = 44 42 byte

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

0

JavaScript, 95 byte

95 byte, nhưng chỉ có 71 ký tự. Bộ đếm byte . Sử dụng cách @Neil để xác định xem các đối số có được thông qua không.

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

0

Java 7, 176 byte

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

Java 8, 173 byte

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

0

Groovy Script, 54 51 byte

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

Biên tập

Chuyển từ 913..937it==930?:sang(913..937)-930


Ai đó có thể giải thích cho tôi, tại sao câu trả lời của tôi bị hạ thấp? Nó đã phá vỡ bất kỳ quy tắc?
Victor A.

0

Python 3, 80 byte

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

0

C #, 174 byte

Lười thực hiện, có thể chơi golf rất nhiều

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

0

PHP, 79 byte

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

tạo các thực thể html unicode và giải mã chúng. Chạy với -r.


0

Pip , 21 20 byte

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

Đây là một ngày đáng nhớ. Pip đã trói Jelly! 1

1 Và thua hai golflang khác, nhưng bất cứ điều gì.

Hãy thử trực tuyến!

Giải trình

             ,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

Braingolf , 24 byte

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

Hãy thử trực tuyến!

Giải trình:

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

Perl trong Windows - bảng điều khiển không hỗ trợ Unicode - (42 byte, bao gồm cả khoảng trắng)

Đây không phải là giải pháp của tôi, tôi chỉ đơn thuần là điều chỉnh giải pháp Perl của Denis Ibaev ở trên, với bảng điều khiển 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
αβγδεζηθικλμνξοπρσςτυφχψ

Tất nhiên mã trang điều khiển phải là tiếng Hy Lạp:

chcp 737

LƯU Ý: Chỉ là một ý tưởng nhỏ. Trên trang này tôi có thể thấy rằng một số câu trả lời sử dụng CHARACTERS dường như là Unicode trên 255. Do đó, các ký tự đó lấy ít nhất 2 byte để mã (có lẽ là 4 nếu một người đang sử dụng bảng điều khiển sử dụng ký tự Unicode 32 bit?). Sẽ không tốt hơn nếu thước đo cuộc thi là đơn vị CHARACTER (là Unicode hoặc ASCII hoặc EBCDIC bất cứ điều gì) chứ không chỉ là BYTES? Nó sẽ không đơn giản và thống nhất hơn (tự hỏi nếu tính từ này tồn tại trong tiếng Anh, "unulerur" trong tiếng Pháp)?


Mã trước bị lỗi: Không in chữ thường omega.

Mã đã sửa (70 ký tự):

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
αβγδεζηθικλμνξοπρσςτυφχψω

Tôi biết rằng chúng tôi không được phép in mẫu sigma 'cuối từ' ('ς') nhưng vì đó là một lỗi sai trong tiếng Hy Lạp cổ đại để sử dụng sigma thông thường ('σ') ở cuối từ viết thường, Tôi chọn in nó, vì câu đố của câu đố này là "In bảng chữ cái Hy Lạp" và nhân vật này là một phần của nó ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.