Imprimez l'alphabet grec!


11

Évidemment, vous devez imprimer l'alphabet grec. Mais je pensais que je le rendrais un peu plus intéressant, donc il y a une torsion: lorsque votre programme est exécuté avec un argument (n'importe quoi), il devrait afficher l'alphabet grec en minuscules.

Information

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

Règles / exigences

  • Chaque soumission doit être un programme complet.
  • Les fonctions intégrées pour imprimer l'alphabet grec ne sont pas autorisées
  • Des échappatoires standard s'appliquent
  • Vous devez imprimer exactement ce qui est affiché.

Notation

Les programmes sont notés en octets. Si vous utilisez un jeu de caractères différent de UTF-8, veuillez préciser. Essayez d'obtenir le moins d'octets de tout le monde, c'est du !

Cas de test

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

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

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

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

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

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

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

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

Soumissions

Pour vous assurer que votre réponse s'affiche, veuillez commencer votre réponse avec un titre, en utilisant le modèle de démarque suivant:

# Language Name, N bytes

Nest la taille de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores dans le titre, en les barrant. Par exemple:

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

Si vous souhaitez inclure plusieurs nombres dans votre en-tête (par exemple, parce que votre score est la somme de deux fichiers ou que vous souhaitez répertorier les pénalités de drapeau d'interprète séparément), assurez-vous que le score réel est le dernier numéro de l'en-tête:

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

Vous pouvez également faire du nom de la langue un lien qui apparaîtra ensuite dans l'extrait de classement:

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

Classement

Voici un extrait de pile pour générer à la fois un classement régulier et un aperçu des gagnants par langue.


5
Une chaîne vide compte-t-elle comme ayant un argument ou sans argument? Veuillez utiliser le bac à sable pour obtenir des commentaires avant de publier un défi sur le site principal.
Mego


2
L'argument sera-t-il toujours un argument, ou peut-il y avoir deux arguments ou plus?
Erik the Outgolfer

1
Kritixi approuve le défi.
user41805

4
Je suis un peu confus par vos trois derniers cas de test; ils ressemblent à des appels de fonction, mais les règles demandent spécifiquement un programme complet.
Dennis

Réponses:


7

05AB1E , 16 octets

Utilise l' encodage CP-1252 .

24Ý17K913+çJDl¹s

Essayez-le en ligne!

Explication

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

Voulez-vous dire [0 ... 23]ou à la [0, 24)place de [0 ... 24]ou [0, 24]?
Erik the Outgolfer

1
@EriktheGolfer Il y a un autre caractère entre la plage de points de code de l'alphabet grec.
jimmy23013

@ jimmy23013 Oh oui, j'étais vraiment confus. Je le travaille dans une autre langue, que je ne dirai pas ici. Je m'y suis engagé en ce moment.
Erik the Outgolfer

7

Rubis, 56 octets

Programme complet. Je ne pense pas qu'une fonction / réponse lambda sera plus courte que celle-ci pour cette langue.

Dangit, sigma ς. C'est pourquoi nous ne pouvons pas avoir de belles choses. Et vous aussi, (caractère irréprochable qui sert d'espace réservé pour "majuscule" ς)

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

6
Je pense que cela imprime un sigma extra minuscule,
Ang

1
Cela imprime maintenant un U + 03A2 supplémentaire.
LegionMammal978

5

JavaScript (ES6), 89 83 81 octets

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

Si un tableau de caractères est acceptable, alors pour 82 80 78 octets:

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

Edit: enregistré un tas d'octets grâce à @ETHproductions.


L'utilisation String.fromCharCode(...array)est à nouveau plus courte:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i+(i>16)+913+32*!!a.length))
ETHproductions

1
Et depuis les String.fromCharCodeétages, vous pouvez économiser encore deux octets comme ceci:(...a)=>String.fromCharCode(...[...Array(24)].map((_,i)=>i*1.06+913+32*!!a.length))
ETHproductions

@ETHproductions Je n'arrive pas à croire que j'ai oublié d'utiliser String.fromCharCode(...)mais j'aime cette i*1.06astuce! Malheureusement, les compréhensions sont plus longues cette fois pour autant que je sache.
Neil

J'ai réussi à descendre à (...a)=>String.fromCharCode(...[for(_ of Array(i=24))i++*42/41+889+32*!!a.length])(82).
ETHproductions

Vous pouvez supprimer le !!, car il n'y aura que zéro ou un argument.
ETHproductions

4

Haskell, 114 108 octets

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

Merci à @xnor pour avoir économisé 6 octets

Cela pourrait gagner dans la catégorie des importations les plus longues si rien d'autre…


Il semble que cela vaut la peine de définir q[a,b]=[a..b]à utiliser 4 fois.
xnor

1
getArgs>>=putStr.fest plus court.
Ørjan Johansen


3

Pyke, 55 21 20 octets

24Fi16>913s.C)sz!hAl

Essayez-le ici!

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

En fait , 62 octets

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

Essayez-le en ligne!

Étant donné qu'une partie de l'alphabet grec majuscule n'est pas présent dans CP437, cette solution est codée en UTF-8 et notée en conséquence. Voici un hexdump (réversible avec 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.

Explication:

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

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

Ancienne version:

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

Ancienne version:

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

[a,a.lower()][len(sys.argv)-1]parce que les commentaires indiquent qu'il n'y aura jamais qu'un seul argument.
Value Ink

Vous pouvez raser un octet de plus avec [a.lower(),a][-len(sys.argv)].
toriningen

2
Quel encodage utilisez-vous pour que ce soit 76 octets?
AdmBorkBork


2

R, 104 99 92 octets

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

Jouer sur la deuxième version que j'avais précédemment. Fonctionne de la même manière que la version précédente.

Merci à @JDL d'avoir rasé 7 octets!

Anciennes versions à 104 octets:

J'ai deux solutions différentes avec le même nombre d'octets:

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

Ou:

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

Explications:

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

Usage:

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

Pour certaines raisons, il ne fonctionne pas sur R-Fiddle (il change "de 'par défaut qui rend le code renvoie une erreur) mais vous pouvez l' essayer sur Ideone .


Remplacer +'if'(missing(x),0,32)par +32*!missing(x)?
JDL

@JDL Merci! Je ne sais pas pourquoi je n'y ai pas pensé.
plannapus

2

Japt , 21 19 octets

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

Testez-le (pas d'entrée)
Testez-le (entrée de chaîne vide)


Explication

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

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

Non golfé:

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

Malheureusement, (('Α'to'Ρ')++('Σ'to'Ω'))est un Vector[Char], qui serait affiché sous la forme Vector('Α', 'Β', ..., il doit donc être converti en une chaîne avec mkString. L'argument to mapest appelé &pour économiser les espaces entre &else, else&et & toLower.


1

Gelée , 21 octets

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

Un programme complet

TryItOnline! - notez qu'une fois exécuté avec un argument, un rafraîchissement sera nécessaire pour fonctionner sans argument.

Comment?

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

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

ASCII uniquement, mais sorties en UTF-16. Construit un chartableau de caractères appropriés, le -joins ensemble dans une chaîne, le stocke dans $a. Ensuite, utilise !$args.countcomme index dans le tuple, pour afficher soit $asi aucun argument n'est présent, soit $a.ToLower()s'il y a au moins un argument.

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

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

1

PHP, 84 octets

Version en ligne

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

PHP, 87 octets

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

gotcha . Vous semblez en quelque sorte absent. $argc>1est 8 octets plus court que isset($argv[1])et n'a pas besoin d'un blanc.
Titus du

1

APL (Dyalog Extended) , 26 octets

La manière normale de passer plusieurs arguments aux programmes APL consiste à utiliser des listes. Donc, ce programme invite à une telle liste, qui peut avoir 0 ou 1 arguments.

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

Essayez-le en ligne!

 invite pour la liste des arguments

 compter le nombre d'arguments (0 ou 1)

~ nier cela (1 ou 0)

'Ω'× "multipliez" Omega par cela (1 conserve les majuscules, 0 fois les minuscules)

 Tous les caractères de Α- Ωou α- ωrespectivement

'ς΢'~⍨ supprimer les sigmas finaux minuscules et "majuscules"


0

Python 2, 108 octets

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

Terriblement golfé, peut-être :(

Et non, je ne peux pas utiliser A.lower() .

Merci à 13285 (alexwlchan) pour -11 octets.


C'est la version la plus golfique que je puisse faire.
Erik the Outgolfer

Vous pouvez enregistrer 8 octets en ignorant l'affectation A,aet en utilisant simplement ces chaînes directement dans le print.
alexwlchan

@alexwlchan D'accord, je n'y ai tout simplement pas pensé ... quand même terriblement golfé.
Erik the Outgolfer

0

Mathematica, 91 octets

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

Scénario. Prend simplement la plage de caractères de Αà Ω, supprime U + 03A2 / ς, convertit en minuscules ou non et imprime.


0

Perl, 39 + 3 ( -C2indicateur) = 44 42 octets

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

0

JavaScript, 95 octets

95 octets, mais seulement 71 caractères. Compteur d'octets . Utilisation de la manière de @Neil pour déterminer si des arguments sont passés.

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

0

Java 7, 176 octets

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

Java 8, 173 octets

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

0

Python 3, 80 octets

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

0

C #, 174 octets

Mise en œuvre paresseuse, peut probablement jouer au golf beaucoup

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

0

PHP, 79 octets

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

génère des entités html unicode et les décode. Courez avec -r.


0

Pip , 21 20 octets

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

C'est une journée mémorable. Pip a attaché Jelly battu! 1

1 Et perdu contre deux autres golflangs, mais peu importe.

Essayez-le en ligne!

Explication

             ,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?"αβγδεζηθικλμνξοπρστυφχψω":"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ"]

démo



0

Braingolf , 24 octets

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

Essayez-le en ligne!

Explication:

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

Script Groovy, 54 51 octets

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

Éditer

Switched from 913..937 and it==930?: to (913..937)-930


Can someone explain me, why my answer was downvoted? Did it broke any rules?
Victor A.

-1

Perl under Windows -- console has no Unicode support -- (42 bytes, including spaces)

This is not my solution, I am just merely adapting the Perl solution of Denis Ibaev above, to Windows console 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
αβγδεζηθικλμνξοπρσςτυφχψ

The console page code must be Greek of course:

chcp 737

NOTE: Just a small idea. On this page I can see that some of the answers use CHARACTERS that seem to been Unicode above 255. Therefore those characters take at least 2 bytes to code (perhaps 4 if one is using a console using 32bits Unicode chars?). Would not it be better if the contest measure was the CHARACTER unit (being Unicode or ASCII or EBCDIC ou whatever) rather than just BYTES? Would not it be simpler and more unifying (wonder if this adjectif exists in English, "unificateur" in French)?


Previous code in error: Does not print lowercase omega.

Corrected code (70 chars) :

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

I know we are not supposed to print the 'end-of-word' sigma form ('ς') but as it is a mispelling error in ancient Greek to use regular sigma ('σ') at the end of a lowercase word, I choose to print it, as the tittle of this puzzle is "Print the Greek alphabet" and that this character is part of it...

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.