Vẽ một chiếc mũ bên bảng chữ cái


22

Nhiệm vụ của bạn là in văn bản chính xác này:

            z
            yz
           xyz
           wxyz
          vwxyz
          uvwxyz
         tuvwxyz
         stuvwxyz
        rstuvwxyz
        qrstuvwxyz
       pqrstuvwxyz
       opqrstuvwxyz
      nopqrstuvwxyz
      mnopqrstuvwxyz
     lmnopqrstuvwxyz
     klmnopqrstuvwxyz
    jklmnopqrstuvwxyz
    ijklmnopqrstuvwxyz
   hijklmnopqrstuvwxyz
   ghijklmnopqrstuvwxyz
  fghijklmnopqrstuvwxyz
  efghijklmnopqrstuvwxyz
 defghijklmnopqrstuvwxyz
 cdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz

Trường hợp không quan trọng.

Hãy nhớ rằng, đây là , vì vậy mã có số byte nhỏ nhất sẽ thắng.


2
Tại sao các downvote?
Oliver Ni

19
Tôi nghi ngờ một số người chỉ mệt mỏi với tất cả các thử thách KC theo mẫu bảng chữ cái.
xnor

Chúng ta có thể làm điều đó bằng chữ hoa?
Hạ cấp

7
Nghiêm túc mà nói, một thách thức bảng chữ cái khác ?
Erik the Outgolfer

2
Tôi thích những thách thức bảng chữ cái. Điều này có thể dễ dàng tái thương hiệu như một cây Giáng sinh.
Pete Arden

Câu trả lời:


6

Cheddar, 50 45 42 37 byte

25|>0=>i->print" "*(i/2|0)+(65+i)@"90

Đơn giản, nhưng sử dụng cú pháp phạm vi của cheddar (cả số và bảng chữ cái)

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

Giải trình

25 |> 0 =>    // Map range [0, 26) (i.e. [25, 0] reversed) over....
   i -> 
     print    // Prints in it's own line...
     " " * (i/2 |0) +     // Number of spaces is floor(n/2).
                          // `|0` for flooring is hack from JS
     (65 + i) @" 90       // Char code range is this

65là mã char cho A90choA


1
Z90, không A.
Mego

5

05AB1E , 15 13 byte

A.svy12N;ï-ú,

Hãy thử trực tuyến! (hơi khác so với ở trên như úchưa có trên TIO)

Giải trình

  1. Bảng chữ cái đẩy
  2. Tính các hậu tố của bảng chữ cái
  3. Chuẩn bị 12 chỉ mục / 2 dấu cách
  4. In

4

Python 2, 70 byte

Được chuyển từ câu trả lời của Emigna , -2 byte để thay thế -i-1bằng~i

for i in range(26):print' '*(12-i/2)+"abcdefghijklmnopqrstuvwxyz"[~i:]

Tôi khá chắc chắn rằng việc sử dụng bản đồ có thể mang lại một bảng chữ cái ngắn hơn, ngoại trừ có thể chữ thường có giá trị cao hơn
Lemon

Thật ra tôi không chắc nữa. Tôi nghĩ dù sao nó cũng không hoạt động cho điều này :( soz
Lemon

4

R, 67 66 59 byte

EDIT: Đã lưu một vài byte nhờ @rturnbull

for(i in 25:0)cat(rep(" ",i/2),letters[i:25+1],"\n",sep="")

Khai thác thực tế là bất kỳ số nào được truyền cho rephàm đều được tự động làm tròn xuống số nguyên gần nhất (ví dụ rep("*",1.99) => "*"), có nghĩa là chuỗi thực tế được truyền là floor(13-1:26/2):

12 12 11 11 10 10  9  9  8  8  7  7  6  6  5  5  4  4  3  3  2  2  1  1  0  0

1
Điều này đi ra ngắn hơn so với nỗ lực ma trận của tôi. Thay thế 14...-1bằng 13?
JDL

@JDL À tất nhiên rồi. Phần còn lại của việc thử một cách tiếp cận khác
Billywob

2
Nếu bạn lặp qua 25:0thay vì 1:26, bạn có thể thay đổi 13-i/2để i/2, và đơn giản hóa (27-i):26để i:25+1, tiết kiệm 6 byte.
rturnbull

3

Bình thường, 15 byte

j_m+*/d2\ >GdUG

Một chương trình in kết quả thành STDOUT.

Dùng thử trực tuyến

Làm thế nào nó hoạt động

j_m+*/d2\ >GdUG  Program
             UG  Yield [1, 2, 3, 4, ..., 26]
  m              Map over the range with variable d:
          >Gd      Yield alphabet with first d-1 letters discarded
   +               Prepend
     /d2             d//2
    *   \            spaces
 _               Reverse
j                Join on newlines
                 Implicitly print

Hãy thử ;thay vì\
isaacg

3

Python 2, 52 byte

n=26;s=''
while n:n-=1;s=chr(97+n)+s;print n/2*' '+s

Tích lũy chuỗi sđể in và cập nhật số lượng khoảng trắng hàng đầu n/2. Một whilevòng lặp kết thúc tại 0là một vòng lặp số hiếm hơn so với execvòng lặp (53 byte):

n=26;s=''
exec"n-=1;s=chr(97+n)+s;print n/2*' '+s;"*n

Cũng là một thay thế 53 byte:

s=''
exec"s=chr(122-len(s))+s;print s.center(26);"*26

3

JavaScript (ES6), 85 75 69 68 byte

for(s=a='',x=36;--x>9;)s+=` `.repeat(x/2-5)+(a=x.toString(36)+a)+`
`

-1 byte nhờ @ l4m2 .


2
Đây không phải là một đoạn chứ không phải là một chức năng hoặc chương trình?
Neil

1
for(s=a='',x=36;--x>9;)s+=` `.repeat(x/2-5)+(a=x.toString(36)+a)+'#'1B ngắn hơn
l4m2

@ l4m2 Rực rỡ!
darrylyeo

1
Ý tưởng hay sử dụng cơ sở 36! +1
Tít

2

Brain-Flak , 244 byte

((((((()()()()())){}{}){}){}()){})((((()()()){}){}()){}){(({}[()]<>)<({}<(<>({})<>)>){({}[()]<(({})[()])>)}({}({})<>[({})]<>(((()()()){}){}){}())((<>)<>{<({}[()])><>([{}]())<>}<>[{}]<>{}){({}[()]<((((()()()()){}){}){})>)}((()()()()()){})><>)}<>

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


Điều này nên được đọc đủ như là. Nếu bạn cần nó, tôi có một lời giải thích đầy đủ:

push 122 (z): ((((((()()()()())){}{}){}){}()){})
push 26:      ((((()()()){}){}()){})
loop 26 times (i = 25..0): {
 (
  i--, push to b stack:({}[()]<>)
  <
   put 122 from a stack under i: ({}<(<>({})<>)>)
   i times push letter-1: {({}[()]<(({})[()])>)}
   replace top 0 with 26-i: ({}({})<>[({})]<>(((()()()){}){}){}())
   devide by two: ((<>)<>{<({}[()])><>([{}]())<>}<>[{}]<>{})
   add spaces: {({}[()]<((((()()()()){}){}){})>)}
   push 10 (\n): ((()()()()()){})
  >
  flip stack back: <>
 push i--: ) 
}
flip to results stack: <>

4
This should be readable enough as is.Bạn đang nói về Brain-Flak , phải không?
Erik the Outgolfer

2

Thạch , 15 13 byte

-2 byte nhờ @miles (hình thành chuỗi niladic mà tôi nghi ngờ tồn tại nhưng không hình thành)

ØaJ’H⁶ẋżṫJ$ṚY

Dùng thử trực tuyến!

Làm sao?

ØaJ’H⁶ẋżṫJ$ṚY - Main link
Øa            - alphabet yield -> ['a', 'b', 'c', ..., 'y', 'z']
  J           -    range(length)      -> [1, 2, 3, ..., 25, 26]
   ’          -    decrement          -> [0, 1, 2, ..., 24, 25]
    H         -    halve              -> [0,.5  1, ..., 12, 12.5]
     ⁶        -    literal [' ']
      ẋ       -    repeat list        -> [[], [], [' '], ..., 12x' ', 12x' ']
          $   - last two links as a monad
         J    -     range(length)     -> [1, 2, 3, ..., 25, 26]
        ṫ     -     tail (vectorises) -> [['a'-'z'], ['b'-'z'], ..., ['y','z'], ['z']]
       ż      - zip
              -> [[[],['a'-'z']], [[],['b'-'z']], ..., [12x' ',['y','z']], [12x' ',['z]]]
           Ṛ  - reverse whole array
            Y - join with line feeds (implicit print)

Tôi tìm thấy một cách để tạo thành một chuỗi niladic bắt đầu với bảng chữ cái ØaJ’H⁶ẋżṫJ$ṚYmà tiết kiệm 2 byte
dặm

Bạn có nghĩ rằng lời giải thích là chính xác?
Jonathan Allan

1
Vâng, chỉ cần nghĩ về nó như một chuỗi đơn âm với một đối số duy nhất là bảng chữ cái
dặm

2

C, 72 68 byte

m(i){for(char*k=&k[i=26];i;printf("%*c%s\n",--i/2+1,0,k))*--k=64+i;}


1

Turtlèd , 70 68 byte

lưu ý không gian dấu

#abcdefghijklmnopqrstuvwxyz#' -{ -{ +.r_}' l[ l-]d,(*@!' r)(!@*)_}' 

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

Làm thế nào nó hoạt động:

#abcdefghijklmnopqrstuvwxyz#              Set string var to this value
                            ' -           write space on first grid cell, string pointer-=1
                               {                                    } While cell is space
                                 -                 decrement string pointer
                                  {     }    While cell is space
                                    +.       increment string pointer, write pointed char
                                      r      move right
                                       _     write non-space if pointed char is last char

                                         '[space]   write space on cell
                                           l        move left
                                            [ l-]   move left, pointer-- until cell's space
                                                 d, move down, write character var \
                                                                           (initially *)

                                                   (*     ) if cell is *
                                                     @!     set char var=!
                                                       ' r  write space over *, move right

                                                           (!    ) if cell is !
                                                             @*    set char var=*
                                                               '[space] write space over !

                                                                 _ (explanation below)
                                               write (*|!) if pointed char is last char

                                                                   '[space]    Write space

Giải thích có thể đọc được của con người (?):

Nó sử dụng chuỗi var để chứa bảng chữ cái. Mỗi lần lặp, nó giảm chỉ số xuống một, cho đến khi nó bao quanh và dừng lại, sau khi đến dòng cuối cùng. Đối với các thụt lề xen kẽ, nó sử dụng var var. Mỗi lần lặp, nó kiểm tra var var và lật nó. nếu nó là * nó dịch chuyển đúng, vì vậy ký tự đầu tiên căn chỉnh, nếu không thì không, vì vậy nhân vật cuối cùng căn chỉnh.


1

Perl, 44 byte

Đây là một câu trả lời của @ xnor .

$n=26;say$"x($n/2),$@=chr(97+$n).$@while$n--

Cần -E(hoặc -M5.010) để chạy:

perl -E '$n=26;say$"x($n/2),$@=chr(97+$n).$@while$n--';

1

PHP, 71 byte

for(;++$i<27;)echo str_pad(substr(join(range(a,z)),-$i),26," ",2)."\n";

1
(26-$i)/213-$i/2
manatwork

Nó sẽ ném một lỗi nếu bạn loại bỏ dấu hai chấm cuối cùng? Ngoài ra, sẽ rất tuyệt nếu bạn cung cấp một liên kết đến một trang web trực tuyến với ví dụ, ví dụ. sandbox.onlinephpfifts.com
RedClover

1

Java 7,128 127 byte

Đã lưu 1 byte. Cảm ơn kevin.

String c(int n,String s,char v,String d){String c="";for(int j=0;j++<(n-1)/2;c+=" ");return n>0?c(--n,s=v+s,--v,d+c+s+"\n"):d;}

vô dụng

  class A {

public static void main(String[] args) {
System.out.print(c(26, "", (char)122, ""));
}
static String c(int n, String s, char v, String d){

    String c = "";

    for (int j = 0; j++ < (n - 1)/2; c += " ");

    return n > 0 ? c(--n, s = v + s, --v, d + c + s + "\n" ) : d;
}
}

Không có 122 đi qua trong một chức năng

132 byte

String c(String s,int n,String d){String c="";int v=96,j=0;for(;j++<(n-1)/2;c+=" ");return n>0?c(s=(char)(v+n--)+s,n,d+c+s+"\n"):d;}

vô dụng

  class A{

public static void main(String[] args) {
System.out.print(c("",26,""));

}
static String c(String s, int n, String d) {
    String c = "";
    int v = 96,j=0;
    for (; j++ < (n - 1)/2; c += " ");
    return n > 0 ? c(s = ( char) (v + n--) + s, n, (d + c + s + "\n")) : d;
     }
  }

1
Bạn có thể loại bỏ =tại d+=c+s+"\n". Ngoài ra, bạn có thể muốn định dạng mã không mã hóa của mình một chút bằng các vết lõm. Tôi nhận thấy rằng với một số câu trả lời khác của bạn là tốt. :)
Kevin Cruijssen

1
Rất tiếc! tôi đã làm sai lầm này một lần nữa, xấu hổ với tôi. ...... ok @KevinCruijssen tôi đang ở trên đó.
Numberjack

Bạn không thể thay thế s=v+sđệ quy bằng s+=v?
Roman Gräf

Không..bởi vì mẫu chữ bị lạc hậu.
Numberjack

1

Ruby, 64 byte

(0..26).each{|x|puts' '*(12-x/2)+('a'..'z').to_a[~x..-1].join()}

Một vài nhận xét: Bạn không cần đặt dấu ngoặc sau khi join gọi eachthay vì mapkhông cần thiết, vì chúng tôi không quan tâm đến những gì chúng tôi sẽ trả lại Bạn có thể gọi lasttrên một phạm vi
Lee W

Thay vì (0..26).map, hãy thử 27.times; thay vì ('a'..'z').to_a, [*?a..?z]; và thay vì .join, *"".
Jordan

1

Japt , 16 byte

;C¬£SpY/2 +CsYÃw ·

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

Giải trình:

;C¬£SpY/2 +CsYÃw ·
;C                  // Alphabet shortcut
  ¬                 // Split into an array of chars
   £          Ã     // Map each item X and index Y by:
    SpY/2           //  " " repeated floor(Y/2) times
          +CsY      //  + alphabet.slice(Y)
               w    // Reverse the array of lines
                 ·  // Join with newlines

1

REXX, 52 byte

do i=1 to 26
  say centre(right(xrange(a,z),i),26)
  end

Đầu ra:

            Z             
            YZ            
           XYZ            
           WXYZ           
          VWXYZ           
          UVWXYZ          
         TUVWXYZ          
         STUVWXYZ         
        RSTUVWXYZ         
        QRSTUVWXYZ        
       PQRSTUVWXYZ        
       OPQRSTUVWXYZ       
      NOPQRSTUVWXYZ       
      MNOPQRSTUVWXYZ      
     LMNOPQRSTUVWXYZ      
     KLMNOPQRSTUVWXYZ     
    JKLMNOPQRSTUVWXYZ     
    IJKLMNOPQRSTUVWXYZ    
   HIJKLMNOPQRSTUVWXYZ    
   GHIJKLMNOPQRSTUVWXYZ   
  FGHIJKLMNOPQRSTUVWXYZ   
  EFGHIJKLMNOPQRSTUVWXYZ  
 DEFGHIJKLMNOPQRSTUVWXYZ  
 CDEFGHIJKLMNOPQRSTUVWXYZ 
BCDEFGHIJKLMNOPQRSTUVWXYZ 
ABCDEFGHIJKLMNOPQRSTUVWXYZ

1

Vim, 25 tổ hợp phím

:h<_␍jjYZZPqqPxYPr Yq12@q

Trong đó ␍ là phím Enter, đôi khi cũng được ký hiệu là <cr>.

Giải trình

:h<_␍jjYZZ                 " get a-z
          P                " initialize by pasting
           qq              " start record macro @q
             Px            " paste and remove the 1st char
               YPr␣        " yank and paste and replace 1st char with space
                   Y       " yank the whole line again
                    q      " end recording
                     12@q  " call macro 12 @q times

Tôi mới biết đến ViM - Tôi đã bắt đầu vào tháng 11. Tự hỏi nếu có một cách để hợp nhất việc khởi tạo Pvới một trong macro.

Cách "chính xác" để kiểm tra trình tự ViM được đánh gôn là gì? Tôi đã thử nghiệm với \vi -u /dev/null. Tuy nhiên, trong một VM thậm chí :h<_␍không hoạt động. Cũng không chắc chắn tại sao ViM của tôi sẽ chuyển sang nhân vật không gian đầu tiên haha.

PS Trước khi tôi chuyển sang sử dụng OS X, tôi đã chơi gôn ở Hexagony với các công cụ tuyệt vời ... Bây giờ trên OS XI không làm rượu và do đó không chạy các công cụ tuyệt vời để giải thích và gỡ lỗi. Thế là bắt đầu hành trình của tôi với ViM!


1

C # (.NET Core) , 112 byte

()=>string.Join("\n",new int[26].Select((_,i)=>"".PadLeft(12-i/2)+"abcdefghijklmnopqrstuvwxyz".Substring(25-i)))

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

()=>string.Join("\n", // OP doesnt want to output a sequence of string...
    new int[26].Select((_,i)=> // yield range from 0 to 25
        "".PadLeft(12-i/2)+ // add spaces to center
            "abcdefghijklmnopqrstuvwxyz".Substring(25-i)))  // remove letters

1

Tcl , 92 byte

set a {}
time {set a [format %c [expr 123-[incr i]]]$a;puts [format %[expr 13+$i/2]s $a]} 26

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

tcl, 94

set a {}
set i 123
time {set a [format %c [incr i -1]]$a;puts [format %[expr 74-$i/2]s $a]} 26

bản giới thiệu

Ở giữa quá trình, tôi đã nhận được phiên bản in nghiêng của chiếc mũ:

tcl, 94

set a {}
set i 123
time {set a [format %c [incr i -1]]$a;puts [format %[expr $i/2-24]s $a]} 26

bản giới thiệu


tcl, 101

set a {}
set i 123
while \$i>97 {set a [format %c [incr i -1]]$a;puts [format %[expr ($i-48)/2]s $a]}

bản giới thiệu

Ở giữa quá trình, tôi đã nhận được phiên bản in nghiêng của chiếc mũ:

tcl, 99

set a {}
set i 123
while \$i>97 {set a [format %c [incr i -1]]$a;puts [format %[expr $i/2-24]s $a]}

bản giới thiệu



@ ASCII-chỉ cảm ơn!
sergiol

1

Lisp thường gặp, SBCL, 83 82 byte

(dotimes(i 27)(format t"~26:@<~a~>
"(subseq"ABCDEFGHIJKLMNOPQRSTUVWXYZ"(- 26 i))))

Giải trình

(dotimes(i 27) ; loop from i=0 to i=26
(format t"~26:@<~a~>
"(subseq"ABCDEFGHIJKLMNOPQRSTUVWXYZ"(- 26 i))))
;print out part of alphabet starting from character number 26-i (counting from zero)
;using justification (~26:@<~a~>) to center with weight 26 characters

-1 sử dụng đường chỉ bằng ASCII để sử dụng <enter>thay vì~%



1

T-SQL, 107 byte

DECLARE @t VARCHAR(99)=SPACE(13),@ INT=27a:SET @t=STUFF(@t,@/2,@%2,CHAR(@+95))PRINT @t
SET @-=1IF @>1GOTO a

Sửa đổi chuỗi cho mỗi dòng bằng cách nhồi nhét vào chữ cái đúng ở vị trí chính xác bằng cách sử dụng phép nối SQL STUFF(). Định dạng:

DECLARE @t VARCHAR(99)=SPACE(13), @ INT=27
a:
    SET @t=STUFF(@t,@/2,@%2,CHAR(@+95))
    PRINT @t
    SET @-=1
IF @>1 GOTO a

@/2sử dụng phép chia số nguyên (không có phần dư) để xác định vị trí để chèn chữ cái. @%2MODULOhàm và lật giữa 0 (chèn chữ cái) và 1 (ghi đè lên khoảng trắng).

Nếu bạn thích chữ cái viết hoa, CHAR(@+63)thay vào đó hãy sử dụng (không thay đổi số byte của chúng tôi).




0

Haskell (Lambdabot), 73 byte

unlines[([1..div(26-length x)2]>>" ")++x|x<-reverse.init$tails['a'..'z']]

cùng chiều dài:

do x<-reverse.init$tails['a'..'z'];([1..div(26-length x)2]>>" ")++x++"\n"

Tôi sử dụng init.tailshoặc tail.initsvới một sự đảo ngược có thể ở phía trước trong khá nhiều thử thách; Tôi ước họ sẽ thêm nó vào Prelude rồi.



0

Groovy, 53 byte

('z'..'a').each{println((it..'z').join().center(26))}

Đầu ra:

            z             
            yz            
           xyz            
           wxyz           
          vwxyz           
          uvwxyz          
         tuvwxyz          
         stuvwxyz         
        rstuvwxyz         
        qrstuvwxyz        
       pqrstuvwxyz        
       opqrstuvwxyz       
      nopqrstuvwxyz       
      mnopqrstuvwxyz      
     lmnopqrstuvwxyz      
     klmnopqrstuvwxyz     
    jklmnopqrstuvwxyz     
    ijklmnopqrstuvwxyz    
   hijklmnopqrstuvwxyz    
   ghijklmnopqrstuvwxyz   
  fghijklmnopqrstuvwxyz   
  efghijklmnopqrstuvwxyz  
 defghijklmnopqrstuvwxyz  
 cdefghijklmnopqrstuvwxyz 
bcdefghijklmnopqrstuvwxyz 
abcdefghijklmnopqrstuvwxyz

0

QBIC , 57 byte

[25,0,-1|Y=Z[1,a/2|Y=Y+@ |]X=Z[a,25|X=X+$CHR$(65+|c)]?Y+X

Điều này hoạt động tốt đáng ngạc nhiên với các vòng lặp QBIC 'FOR. Giải thích (của phiên bản trước - áp dụng nguyên tắc tương tự):

[26,1,-1|          Loops from 26 to 1, decrementing 'a'
                   'a' is used to determine the number of spaces per line and the last letter we want to print
Y=Z                Z is always an empty string in this program, 
                   Y will hold the spaces we need to center this line
[1,a/2|Y=Y+@ |]    Add a space to Y equal to half the value of 'a', giving us a center alignment
X=Z                X holds the characters we need on this line, reset it
[a,26|             FOR c = a to 26 --> loop over the last part of the alphabet
X=X+$CHR$(64+|c)]  Convert c+64 to ASCII and append
?Y+X               Print the spaces and the letters

<outer FOR loop is closed by QBIC>

Đầu ra:

            Z
            YZ
           XYZ
           WXYZ
          VWXYZ
          UVWXYZ
         TUVWXYZ
         STUVWXYZ
        RSTUVWXYZ
        QRSTUVWXYZ
       PQRSTUVWXYZ
       OPQRSTUVWXYZ
      NOPQRSTUVWXYZ
      MNOPQRSTUVWXYZ
     LMNOPQRSTUVWXYZ
     KLMNOPQRSTUVWXYZ
    JKLMNOPQRSTUVWXYZ
    IJKLMNOPQRSTUVWXYZ
   HIJKLMNOPQRSTUVWXYZ
   GHIJKLMNOPQRSTUVWXYZ
  FGHIJKLMNOPQRSTUVWXYZ
  EFGHIJKLMNOPQRSTUVWXYZ
 DEFGHIJKLMNOPQRSTUVWXYZ
 CDEFGHIJKLMNOPQRSTUVWXYZ
BCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ

Không phù hợp với OP.
Bạch tuộc ma thuật Urn

@carusocomputing nó làm ngay bây giờ.
steenbergh

0

Vợt 137 byte

(for((n(range 122 96 -1)))(for((i(floor(/(- n 97)2))))(display #\space))
(for((i(range n 123)))(display(integer->char i)))(displayln ""))

Ung dung:

(define (f)
  (for ((n (range 122 96 -1)))
       (for ((i (floor(/(- n 97)2))))
         (display #\space))
       (for ((i (range n 123)))
         (display (integer->char i)))
    (displayln "")))

Kiểm tra:

(f)

Đầu ra:

            z
            yz
           xyz
           wxyz
          vwxyz
          uvwxyz
         tuvwxyz
         stuvwxyz
        rstuvwxyz
        qrstuvwxyz
       pqrstuvwxyz
       opqrstuvwxyz
      nopqrstuvwxyz
      mnopqrstuvwxyz
     lmnopqrstuvwxyz
     klmnopqrstuvwxyz
    jklmnopqrstuvwxyz
    ijklmnopqrstuvwxyz
   hijklmnopqrstuvwxyz
   ghijklmnopqrstuvwxyz
  fghijklmnopqrstuvwxyz
  efghijklmnopqrstuvwxyz
 defghijklmnopqrstuvwxyz
 cdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
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.