打印希腊字母!


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

如果您想在标头中包含多个数字(例如,因为您的分数是两个文件的总和,或者您想单独列出解释器标志罚分),请确保实际分数是标头中的最后一个数字:

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

您还可以将语言名称设置为链接,然后该链接将显示在页首横幅代码段中:

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

排行榜

这是一个堆栈片段,用于按语言生成常规排行榜和获胜者概述。


5
空字符串算作有参数还是无参数?在主站点上发布挑战之前,请使用沙盒获取反馈。
Mego


2
该参数将始终是一个参数,还是会存在两个或多个参数?
暴民埃里克

1
Kritixi批准了这一挑战。
user41805 '16

4
您最近的三个测试案例让我有些困惑。它们看起来像函数调用,但是规则专门要求完整的程序。
丹尼斯,

Answers:


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哦,对,我真的很困惑。我正在用另一种语言来工作,这里我不会讲。我现在就致力于这一点。
Erik the Outgolfer '16

7

Ruby,56个字节

完整程序。对于这种语言,我认为函数/ ​​lambda答案不会比这短。

Dangit,西格玛ς。这就是为什么我们不能拥有美好的事物。您也一样(不可渲染的字符用作“大写”的占位符ς

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

6
我觉得这个打印一个额外的小写西格玛,ς
Angs

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 '16

1
并且由于String.fromCharCode楼层,您可以像这样保存另外两个字节:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*!!a.length))
ETHproductions 16-10-22

@ETHproductions我不敢相信我忘了使用,String.fromCharCode(...)但是我喜欢这个i*1.06把戏!不幸的是,据我所知,这次的理解时间要长一个字节。
尼尔

我设法将其降至(...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])(82)。
ETHproductions

您可以删除!!,因为只会有零或一个参数。
ETHproductions 16-10-22

4

Haskell,114108字节

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更短。
与Orjan约翰森


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编码并相应地评分。这是一个十六进制转储(可通过反转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 '16

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谢谢!不知道为什么我没有想到那个。
plannapus

2

Japt21 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被称为&保存之间的空间&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()至少有一个参数的情况下输出。

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])并且不需要空白。
泰特斯(Titus),

1

APL(Dyalog扩展),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()

感谢-13个字节的13285(alexwlchan)。


这是我能做的最高尔夫的版本。
暴民埃里克

通过跳过对的分配A,a,您可以节省8个字节,而直接在print。中使用这些字符串即可。
alexwlchan

@alexwlchan是的,我只是没有想到...虽然仍然打得很厉害。
暴民埃里克(Erik the Outgolfer)'16年

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

Python 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;");

生成unicode html实体并对其进行解码。用运行-r


0

21 20字节

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

这是令人难忘的一天。皮普已经追平殴打果冻!1个

1并且输给另外两个golflangs,但无论如何。

在线尝试!

说明

             ,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..937和切换it==930?:(913..937)-930


有人可以解释一下我,为什么我的答案被否决了吗?它违反了任何规则吗?
维克多

-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个字节?)。如果比赛的度量单位是CHARACTER单位(无论是Unicode还是ASCII或EBCDIC等等),而不仅仅是BYTES,会更好吗?会不会更简单,更统一(如果这个形容词以英语存在,以“ unificateur”存在于法语中,这会更好)?


错误的先前代码:不打印小写的omega。

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

我知道我们不应该打印'word-of-word'sigma form('ς'),但是由于古希腊语在小写单词的末尾使用常规sigma('σ')是一个拼写错误,我选择打印它,因为这个难题的标题是“打印希腊字母”,并且这个字符是其中的一部分...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.