#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Expo Alpha Beta
# Copyright (c) 2014, 2018 Nick Montfort <nickm@nickm.com>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice and
# this notice are preserved. This file is offered as-is, without any warranty.
#
# Updated 31 May 2018, changed "print" & "range" for Python 2 & 3 compatibility
# Updated 26 November 2018, substituted a shorter all-permissive license
#
# - This program is meant to be run in textmode.
# - You may need to install additional locales and/or fonts to see some glyphs.

from time import sleep

ALPHABETS = ["a á à â ã b c ç d e é ê f g h i í j k l m n o ó ò ô õ p q r s t u ú v w x y z",
"a á à â ã b c ç d e é ê f g h i í j k l m n o ó ò ô õ p q r s t u ú v w x y z",
"a á ä ã b c č d e é f g h i í j k l m n o ó ö õ p q r s š t u ú ü ũ v w x y z",
"a á â ã b c d e é ê f g h i í î ĩ j k l m n o ô p q ĸ r s t u ú û ũ v w x y z æ ø å",
"a à â æ b c ç d e é è ê ë f g h i î ï j k l m n o ô œ p q r s t u ù û ü v w x y ÿ z",
"a å ä æ b c d e ë ė f g h i j k l m n o ö œ p q r s ß t u ů ü v w x y z",
"a à â b c ç d e è ê f g h i ì î j k l m n o ò ô p q r s t u ù û v w x y z",
"a á â b c d e é è ê ë f g h i î ï j k l m n o ô ö p q r s t u û v w x y z",
"a ă â b c d e f g h i î j k l m n o p r s ș t ț u v x z",
"a à â b d e é è ê ë f g h i ì î ï j k l m n ñ o ô p r s t v y z",
"a â ä b d e ê ë f g h i î ï j k l m n o ô ö p r s t u ù û ü v w y z",
"a ã b ɓ c d ɗ e ë ǝ f g h i ĩ j k l m n ŋ o õ p r s t u v ṽ w y z",
"a á b c č d đ e f g h i j k l m n ŋ o p r s š t ŧ u v z ž",
"· a à b c ç d e é è f g h i í ï j k l m n o ó ò p q r s t u ú ü v w x y z",
"a ą b c č d e ę ė f g h i į y j k l m n o p r s š t u ų ū v z ž",
"a ā b c č d e ē f g ģ h i ī j k ķ l ļ m n ņ o p r s š t u ū v z ž",
"a ą b c ć d e ę f g h i j k l ł m n ń o ó p r s ś t u w y z ź ż",
"a à b c d e é è f g h i ì j k l m n o ó ò p q r s t u ù v w x y z",
"a á b c d e é f g h ḥ i í l ḷ m n ñ o ó p q r s t u ú ü v x y z",
"a á b c d e é f g h i í j k l m n ñ ŋ o ó p q r s t u ú v w x y",
"a á b c d e é f g h i í j k l m n ñ o ó p q r s t u ú ü v w x y z",
"a á b c d e é f g h i í ɨ j k l m n o ó p q r s t u ú ʉ v w x y z",
"a á b c d e é f g h i í l m n o ó p r s t u ú",
"a à b c d e è f g h i ì l m n o ò p r s t u ù",
"a ã b c d e ẽ f g h i j k l m n ɲ ŋ o õ p q r s š t u w x y z ž",
"a à b c d e é f g h i j k l m n o ó ò ô p q r s t u v w x y z æ ø å",
"a à b c d e é f g h i j k l m n o p q r s t u v w x y z å ä ö",
"a â b c d e f g h i î k m n o ô p q r s t u û w x y z ǀ ǁ ǂ ǃ",
"a ä b c d e f g h i j k l m n o ö p q r s ß t u ü v w x y z",
"a ä b c d e f g h i j k l m n o ö p q r s š t u ü v x y z",
"a ä b c d e f g h i j k l m n o ö p q r s t u ü v w x y z",
"a á b d ð e é f g h i í j k l m n o ó p r s t u ú v y ý þ æ ö",
"a á b d ð e f g h i í j k l m n o ó p r s t u ú v x y ý æ ø",
"a ā e ē i ī o ō u ū h k l m n p w ʻ",
"a b ɓ c d ɗ e f g h i j k l m n ñ ŋ o p r s t u w y ƴ",
"a b c č d ḍ e ɛ f g ǧ ɣ h ḥ i j k l m n p q r ṛ s ṣ t ṭ u w x y z ẓ",
"a b c ç d e ə f g ğ h x ı i İ j k q l m n o ö p r s ş t u ü v y z",
"a b c ĉ d e f g ĝ h ĥ i j ĵ k l m n o p r s ŝ t u ŭ v z",
"a b c ç d e f g ğ h ı i İ j k l m n o ö p r s ş t u ü v y z",
"a b c ç d e f g h i j k l m n ñ o p q r s t u v w x y z",
"a b c ç d e f g h i j k l m n o p q r s t u v w x y z",
"a b c č d e f g h i j k l m n o p r s š t u v z ž",
"a b c d e ɛ f g h i j k l m n ɲ ŋ o ɔ p r s t u w y z",
"a b c d e f g h i ĩ j k l m n o p q r s t u ũ v w x y z",
"a b c d e f g h i ĩ j k l m n o p q r s t u ũ v w y z",
"a b c d e f g h i j k l m n o p q r s š t u v w x y z ž å ä ö",
"a b c d e f g h i j k l m n o p q r s š z ž t u v w õ ä ö ü x y",
"a b c d e f g h i j k l m n o p q r s t u v w x y z",
"a b c d e f g h i j k l m n o p q r s t u v w x y z æ ø å",
"a b c d e f g h i j k l m n o p q r s t u v w y z",
"a b c d e f g h i j k l m n o p r s t u v w y",
"a b c d e f g h i j k l m n o p r s t u v w y z",
"a b c d e f g h i j k l m n o p s t u v w y",
"a b c d e f g h i j k l m n o p s t u v w y z",
"a b c d e g h i ĩ j k m n o r t u ũ w y",
"a b c d e g h i j k l m n o p r s t u v w x y",
"a b c d e g h i j k l m n o p r s t u v w y",
"a b c d e g h i j k l m n o p r s t u w y",
"a b d ḓ e f g h i k l ḽ m n ṅ ṋ o p r s t ṱ u v w x y z",
"a b d e ê f g h i j k l m n o ô p r s š t u w x y",
"a b d e ê f g h i j k l m n o ô p r s t u w y",
"a b d e ɛ f g h i k l m n o ɔ p r s t u w y",
"a b d e f g h i j k l m n o p q r s t u w y",
"a b t s e c k x i d q r f g o l m n u w h y",
"α ά β γ δ ε έ ζ η ή θ ι ί ϊ ΐ κ λ μ ν ξ ο ό π ρ σ ς τ υ ύ ϋ ΰ φ χ ψ ω ώ",
"ʼ а б в г ґ д е є ж з и і ї й к л м н о п р с т у ф х ц ч ш щ ь ю я",
"а б в г ғ д е ё ж з и ӣ й к қ л м н о п р с т у ӯ ф х ҳ ч ҷ ш ъ э ю я",
"а б в г ғ д е ё ж з и й к қ л м н о п р с т у ў ф х ҳ ч ш ъ э ю я",
"а б в г д ѓ е ж з ѕ и ј к л љ м н њ о п р с т ќ у ф х ц ч џ ш",
"а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш",
"а б в г д е ё ж з и й к л м н о ө п р с т у ү ф х ц ч ш щ ъ ы ь э ю я",
"а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я",
"а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ь ю я",
"а б г д е ё ж з и й к л м н ӊ о ө п р с т у ү х ч ш ъ ы э ю я",
"а ә б в г ғ д е ё ж з и й к қ л м н ң о ө п р с т у ұ ү ф х һ ц ч ш щ ъ ы і ь э ю я",
"а ә б в г ғ д е ж з и й ј к ҝ л м н о ө п р с т у ү ф х һ ч ҹ ш ы"]

while True:
    for alpha in ALPHABETS:
        for i in range(0, 76):
            print('')
        print(alpha)
        sleep(3)
        alist = alpha.split()
        for i in list(range(1, 76)) + list(range(76, 0, -1)):
            between = ' ' * i
            spaced = between.join(alist)
            for j in range(0, 76):
                print(spaced)
