ความเร็วของตัวอักษร


43

รับสตริงเป็นอินพุตพิมพ์สตริงใหม่ด้วยตัวอักษรแต่ละตัวที่ถูกเลื่อนไปทางขวาโดยดัชนีตัวอักษรที่เกี่ยวข้อง

เราทุกคนรู้ว่า A ช้าและ Z เป็นตัวอักษรเร็ว ซึ่งหมายความว่า Z ถูกเลื่อนไปทางขวา 25 ช่องทาง A ไม่ได้เลื่อนเลยและ B ถูกเลื่อน 1 ช่อง

โปรแกรมของคุณต้องจัดการกับตัวอักษรตัวพิมพ์ใหญ่จาก AZ เท่านั้นและไม่มีอักขระอื่น ๆ ไม่มี whitespaces และไม่มีเครื่องหมายวรรคตอน

โปรดทราบว่าหากตัวอักษร 2 ตัวขึ้นไปตกลงไปในพื้นที่เดียวกันหลังจากขยับตัวอักขระล่าสุดจะถูกนำมาใช้ (ตัวอย่าง: BA->  A)

ตัวอย่าง

"AZ" -> "A                         Z"

"ABC" -> "A B C"

"ACE" -> "A  C  E"

"CBA" -> "  A"

"HELLOWORLD" -> "     E H    DLL   OLO   R  W"

กฎระเบียบ

  • นี่คือดังนั้นโค้ดที่สั้นที่สุดในไบต์ภาษาใด ๆ จะเป็นผู้ชนะ
  • ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม

  • ต้องรับอินพุตเป็นสตริง

  • คุณอาจพิมพ์ผลลัพธ์ไปที่stdoutหรือคืนค่าสตริง
  • อนุญาตให้มีช่องว่างต่อท้ายเดียวและ / หรือขึ้นบรรทัดใหม่ได้
  • คุณสามารถใช้ตัวอักษรตัวพิมพ์เล็กเป็นอินพุตหรือเอาต์พุตได้ แต่ใช้ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เท่านั้น

ช่องว่างต่อท้ายไม่เป็นไร?
Okx

@Okx ใช่บันทึกความคิดเห็นก่อนหน้าของฉัน
Ian H.

1
แล้วเรื่องของช่องว่างท้าย ๆ มากมายล่ะ?
Okx

1
@Okx ต้องห้ามหนึ่งคือทั้งหมดที่คุณได้รับ
Ian H.

ฉันคิดว่าเราสามารถใช้ตัวอักษรพิมพ์เล็กแทนได้ไหม?
Mr. Xcoder

คำตอบ:



11

MATL 11 ไบต์

''jtfy65-+(

ลองออนไลน์! หรือตรวจสอบกรณีทดสอบทั้งหมด

คำอธิบาย

การจัดทำดัชนี MATL ใช้ 1 เคล็ดลับการเล่นกอล์ฟนี้จะใช้ที่นี่ ไม่สามารถใช้อันอื่นนี้ได้เนื่องจากเราต้องการสตริงว่างไม่ใช่อาร์เรย์ตัวเลขที่ว่างเปล่า

พิจารณาการป้อนข้อมูล'ACE'เป็นตัวอย่าง เนื้อหาสแต็คจะแสดงด้านล่างขึ้นบน

''     % Push empty string
       %   Stack: ''
j      % Input string
       %   Stack: '', 'ACE'
t      % Duplicate
       %   Stack: '', 'ACE', 'ACE'
f      % Indices of nonzero entries. Gives [1 2 ... n] where n is input length
       %   Stack: '', 'ACE', [1 2 3]
y      % Duplicate from below
       %   Stack: '', 'ACE', [1 2 3], 'ACE'
65     % Push 65
       %   Stack: '', 'ACE', [1 2 3], 'ACE', 65
-      % Subtract, element-wise. Characters are converted to codepoints
       %   Stack: '', 'ACE', [1 2 3], [0 2 4]
+      % Add, element-wise
       %   Stack: '', 'ACE', [1 4 7]
(      % Fill string '' with values 'ACE' at positions [1 4 7]. The original
       % empty string is extended. Non-existing values are filled with char 0,
       % which is displayed as space. Implicitly display
       %   Stack: 'A  C  E'

5
(: builtin ที่ดี
Erik the Outgolfer

@EriktheOutgolfer ฉันคิดว่ามันคล้ายกับของ 05AB1E ǝหรือเปล่า อา แต่ดูเหมือนว่าจะไม่เป็นเวกเตอร์มากกว่าอินพุตที่สอง / สาม
Luis Mendo

1
เหตุใดจึงเป็นเอกลักษณ์: p และวิธีที่ MATL เติมอัตโนมัติด้วย0s และแสดง0เป็นพื้นที่
Erik the Outgolfer

1
@LuisMendo คำตอบที่ดี ไม่อยากรู้อยากเห็นและคำถามนี้อาจใช้ได้กับภาษาที่ใช้สแต็คส่วนใหญ่เมื่อคุณเขียนใน MATL คุณจำเป็นต้องติดตามสแต็ก (เช่นในบรรทัดด้านบนรหัสหรือเศษกระดาษ ฯลฯ ) ในขณะที่คุณ เขียนรหัส หรือมันกลายเป็นธรรมชาติมากพอที่คุณจะไม่ทำ?
Jonah

1
เฮ้ - เรียนรู้สิ่งใหม่วันนี้; คุณสามารถจัดทำดัชนีในตำแหน่งเดียวกันสองครั้งโดยไม่มีปัญหาใด ๆ ใน MATL (AB) ฉันเริ่มเขียนคำตอบวนซ้ำที่ซับซ้อนแล้วเพราะฉันคิดว่ามันจะให้ข้อผิดพลาดเป็นอย่างอื่น
Sanchises

7

R , 140 133 129 74 ไบต์

บันทึกข้อมูลเป็นตันจำนวนมากในพอร์ตที่ใช้วิธีค่า ASCII เหมือนคนอื่น ๆ เศร้าฉันไม่เคยคิดมาก่อน :(

function(s){F[X-65+1:sum(X|1)]=X=utf8ToInt(s)
F[is.na(F)]=32
intToUtf8(F)}

ลองออนไลน์!

คำตอบเดิม 129 ไบต์:

function(s){o=rep(' ',(n=nchar(s))+25)
for(i in 1:n){k=substr(s,i,i)
o[x<-i+match(k,LETTERS)-1]=k
F=max(F,x)}
cat(o[1:F],sep='')}

ลองออนไลน์!

สร้างรายการoของช่องว่างที่ยาวเกินไปจากนั้นวนซ้ำsแทนที่ค่าoด้วยตำแหน่งที่ถูกต้องและอัพเดตFตำแหน่งที่ถูกต้องของอักขระที่ถูกต้อง จากนั้นพิมพ์Fองค์ประกอบแรกของoโดยไม่มีตัวคั่นระหว่างพวกเขา


6

05AB1E , 20 16 ไบต์

-4 ไบต์ขอบคุณ Emigna

ð₄×svyAuykN+ǝ}ðÜ

ลองออนไลน์!


1
ฉันคิดว่าคุณสั้นลงð₄×svyAuykN+ǝ}ðÜอย่างน้อย นอกจากนี้ยังมีการรับประกันว่าสตริงอินพุตที่เลื่อนไม่เกิน 1,000 ตัวอักษร? ถ้าไม่g₂+ð×ควรทำงาน
Emigna

6

JavaScript (ES6), 81 ไบต์

s=>[...s].map((c,i)=>a[i+parseInt(c,36)-10]=c,a=[])&&[...a].map(c=>c||" ").join``

ค่อนข้างสร้างจากคำตอบที่ไม่สมบูรณ์ของRick Hitchcockแต่จบลงด้วยความแตกต่าง

วางอักขระลงในดัชนีของอาเรย์ที่ว่างจากนั้นใช้อาเรย์การกระจาย ( [...a]) เพื่อเปลี่ยนอิลิเมนต์ที่หายไปเข้าไปundefinedเพื่อให้mapสามารถแทนที่อิลีเมนต์ที่ว่างด้วยช่องว่าง

กรณีทดสอบ


ดีมาก! ฉันกำลังจะโพสต์โซลูชัน 88- ไบต์ แต่คุณดีกว่ามาก
Rick Hitchcock

5

Perl 5, 42 ไบต์

41 รหัสไบต์ + 1 -pสำหรับ \x1bในรหัสเป็นตัวอักษรตัวหนี

อาศัยลำดับการหลบหนีของ ANSI เพื่อวางตำแหน่งเคอร์เซอร์ดังนั้นจึงไม่ทำงานบน TIO

s/./($-=-65+ord$&)?"\x1b[$-C$&\x1b[--$-D":$&/ge

การใช้

perl -pe 's/./($-=-65+ord$&)?"\x1b[$-C$&\x1b[--$-D":$&/ge' <<< 'HELLOWORLD'
     E H    DLL   OLO   R  W

1
นี่คืออันที่ทำงานกับ TIO แต่มาในหนึ่งไบต์เพิ่มเติม (41 ไบต์รหัส + 2 สำหรับ-F): ลองออนไลน์!
Xcali

1
@Xcali คุณควรโพสต์ว่าดังนั้นฉันสามารถ upvote มัน :)
ลินน์

1
@Xcali เห็นด้วยกับ Lynn โพสต์ก็ยิ่งดีเช่นกัน ฉันชอบการแข่งขันภาษาด้วย!
Dom Hastings



4

brainfuck , 127 ไบต์

,[[-<+<+>>]----[----<<->>]<<-[[>]>++++>[-<[-]<+>>]<[-<++++++++>]<[<]>-]>[>]<[-]+[<]>-[[>]<+[<]>-]>.[-]>[>]<[[->>+<<]<]>,]>>[.>]

ลองออนไลน์!

คำอธิบาย

,[                    Take input and start main loop
  [-<+<+>>]             Make two copies of input byte
  ----[----<<->>]<<-    Subtract 64 from one of them to get position in alphabet

                        There are two zero cells between the input and the
                        remaining output cells; we wish to move these zeroes
                        to indicate where the letter is to be moved

  [                     A number of times equal to the position in the alphabet:
    [>]                   Go to current position in output string
    >++++>                Create 4 (as part of creating a space if needed)
    [-<[-]<+>>]           Move output byte back two cells; zero the previous 4 if output existed
    <[-<++++++++>]        Otherwise move a space (32) into that position
    <[<]>-                Move back to counter and decrement
  ]
  >[>]<[-]              Delete last moved byte to make room for input byte
  +[<]>-                Initialize slot at 1 so it is always nonzero in this loop
  [[>]<+[<]>-]          Move input byte into slot
  >.[-]                 Output next output byte and clear
  >[>]<                 Move to space vacated in preparation to remove gap
                        (Moves to end instead if input was A; this causes no problems)
  [[->>+<<]<]           Move values two cells right until zero reached
  >,                    Get into position and take another byte of input
]
>>[.>]                Output characters beyond end of input





2

ภาษา Wolfram (Mathematica) , 76 ไบต์

SparseArray[Reverse@MapIndexed[#&@@#2+LetterNumber@#-1->#&,#]]<>""/. 0->" "&

ใช้รายการอักขระเป็นอินพุต สิ่งนี้จะสร้างข้อความแสดงข้อผิดพลาดที่ปลอดภัยที่จะไม่สนใจ

ฉันรวมPrintและCharacterสั่งการไว้ที่ส่วนท้ายของลิงก์ TIO เพื่อความสะดวกในการใช้งาน ( Characterคำสั่งเพียงแปลงสตริงเป็นรายการอักขระ)

ลองออนไลน์!


LetterNumberในตัวสำหรับการค้นหาตำแหน่งของตัวอักษรในตัวอักษรคืออะไร? อึศักดิ์สิทธิ์นั่นไร้สาระ
numbermaniac

2

J, 37 31 ไบต์

[`]`(' '#~(1+>./)@])}(i.@#+65-~a.&i.)

[`]`(' '#~(1+>./)@])}#\-66-3&u:

-6 ไบต์ขอบคุณ FrownyFrog

คำอธิบาย

สิ่งทั้งหมดเป็นเบ็ด:

[`]`(' '#~(1+>./)@])}  #\-66-3&u:

ด้านขวาจะคำนวณดัชนีใหม่สำหรับตัวอักษรทั้งหมด

ด้านซ้ายจะใช้รูปแบบของอาการนามแก้ไขครั้งแรกในการสร้างสตริงของจำนวนที่จำเป็นของช่องว่าง:} (' '#~(1+>./)@])จากนั้นให้วางตัวอักษรของสตริงต้นฉบับแต่ละตัวลงในดัชนีที่เหมาะสมภายในสตริงพื้นที่ทั้งหมด

ลองออนไลน์!


(i.@#+65-~a.&i.)-> (i.@#+65-~3&u:)-> (i.@#-65-3&u:)-> (#\-66-3&u:)
FrownyFrog

คุณสามารถวางวงเล็บได้เช่นกัน
FrownyFrog

@FrnyFrog tyvm ฉันลืมทั้งสองเทคนิคกอล์ฟ
โยนาห์

คุณสามารถบันทึก 3 ไบต์ด้วย(]' '#~1+>./)
ไมล์

@miles ดี ฉันต้องการให้ตะขอ dyadic เป็นส่วนหนึ่งของกล่องเครื่องมือปกติของฉันฉันสังเกตเห็นว่าคุณใช้มันในการแก้ไขตั้งแต่เช้านี้เช่นกัน
Jonah


2

Haskell, 88 ไบต์

f s|q<-zipWith((+).fromEnum)s[0..]=[last$' ':[c|(c,i)<-zip s q,i==p]|p<-[65..maximum q]]

ลองออนไลน์!

qคือรายการของดัชนีสุดท้ายของตัวอักษรของสตริงป้อนเข้า (ที่มีออฟเซ็ต65) วนรอบดัชนีทั้งหมด (เริ่มต้นที่65) และค้นหาตัวอักษรทั้งหมดเพื่อเตรียมพื้นที่ ใช้เวลาสุดท้าย


1
อีก 88 ไบต์แก้ปัญหา Haskell ดูที่นี่ และที่นี่
nimi

2

C # (.NET Core) , 117 110 84 ไบต์

ที่บันทึกไว้ 7 ไบต์ขอบคุณที่Ayb4tu

เปลี่ยนประเภทการส่งคืนจากstringเป็นchar[]เป็น 26 ไบต์

n=>{int i=0,l=n.Length;var t=new char[l+26];for(;i<l;)t[i+n[i]-65]=n[i++];return t;}

ลองออนไลน์!


คุณสามารถบันทึก 7 ไบต์โดยการเปลี่ยนไปt[i+((int)n[i]-65)] t[i+n[i]-65]
Ayb4btu

@ Ayb4btu ขอบคุณลืมไปว่าchar -> intการแปลงมีความหมายโดยนัย
เอียน H.

2

C # .NET, 89 ไบต์ 87 ไบต์

-2 ไบต์ต้องขอบคุณLan H.

f=>{var s=new char[f.Length+26];for(int i=0;i<f.Length;i++)s[f[i]+i-65]=f[i];return s;}

ลองออนไลน์!


ยินดีต้อนรับสู่เว็บไซต์! :)
DJMcMayhem

ขอบคุณ! ฉันหวังว่ามันโอเคที่จะโพสต์คำตอบหลายคำในภาษาเดียวกัน
Emiliano

คุณสามารถละเว้นวงเล็บปีกกาในfor-loop ของคุณสำหรับ -2 ไบต์
Ian H.

2

Kotlin, 207 ไบต์ 189 ไบต์ 187 187 ไบต์ 177 ไบต์

fun main(){val i=(readLine()+" ".repeat(26)).toCharArray();for(x in(i.size-1) downTo 0){if(i[x]!=' '){i[x+i[x].toInt()-65]=i[x];i[x]=' '}};print(i.joinToString("").trim())}

ถ้าว่างชั้นนำจะยังคงฉันเพิ่งจะเรียกแทนtrimEnd()trim()

Unminified:

fun main() {
    val m = (readLine() + " ".repeat(26)).toCharArray()
    for (x in (m.size - 1) downTo 0) {
        if(m[x] != ' ') {
            m[x + m[x].toInt() - 65] = m[x]
            m[x] = ' '
        }
    }

    print(m.joinToString("").trim())
}

บางที Kotlin ไม่ใช่ภาษาที่ดีที่สุดสำหรับการตีกอล์ฟ แต่ฉันชอบความท้าทายและฉันต้องการทำให้ตัวเองคุ้นเคยกับห้องสมุดมาตรฐานของ Kotlin


1

q / kdb +, 37 ไบต์

วิธีการแก้:

@[max[1+m]#" ";m:!:[x#:]+.Q.A?x;:;]x:

ตัวอย่าง:

q)@[max[1+m]#" ";m:!:[x#:]+.Q.A?x;:;]x:"AZ"
"A                         Z"
q)@[max[1+m]#" ";m:!:[x#:]+.Q.A?x;:;]x:"ABC"
"A B C"
q)@[max[1+m]#" ";m:!:[x#:]+.Q.A?x;:;]x:"ACE"
"A  C  E"
q)@[max[1+m]#" ";m:!:[x#:]+.Q.A?x;:;]x:"CBA"
"  A"
q)@[max[1+m]#" ";m:!:[x#:]+.Q.A?x;:;]x:"HELLOWORLD"
"     E H    DLL   OLO   R  W"

คำอธิบาย:

ฉันคิดว่านี่เป็นความคิดเดียวกันกับวิธีการแก้ปัญหา J คำนวณดัชนีที่ถูกต้องสำหรับอาร์เรย์อินพุตแล้วกำหนดให้เป็นสตริงว่างของความยาวที่ถูกต้อง:

@[max[1+m]#" ";m:til[count x]+.Q.A?x;:;]x: / ungolfed solution
                                        x: / save input as x
@[            ;                     ; ;]   / apply[variable;indices;function;parameters]
                                     :     / assignment
                              .Q.A?x       / location of x in uppercase alphabet
                             +             / added to
                     count x               / length of input
                 til[       ]              / range, 0..n
               m:                          / save as m
  max[   ]                                 / maximum of list
      1+m                                  / m + 1
          #" "                             / take " ", creates empty character list

1

Jq 1.5 , 91 ไบต์

reduce(explode|[.,keys]|transpose[]|.[1]+=.[0]-65)as[$c,$p]([];.[$p]=$c)|map(.//32)|implode

ขยาย

  reduce(  explode         # convert string to array of ordinals
         | [.,keys]        # [ [v0,v1,...], [0,1,2,...] ]
         | transpose[]     # [ [v0,0], [v1,1], [v2,2]...]
         | .[1]+=.[0]-65   # adjust position of each value
  ) as[$c,$p] (
    []
  ; .[$p]=$c               # store each value at its position
  )
| map(.//32)               # map null values to spaces
| implode                  # convert back to string

ลองออนไลน์!


1

ถ่าน 16 ไบต์

P FS«M⌕αι→ιM⌕αι←

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

P                   Output a space to force the indent
   S                Input string
  F «               Loop over each letter
       α            Uppercase letters predefined variable
      ⌕ ι           Find index of current letter
     M   →          Move that many characters right
          ι         Implicitly print the current letter
           M⌕αι←    Move the same number of characters left

1

APL (Dyalog) 26 ไบต์

คำนำหน้าแลมบ์ดานิรนามซึ่งรับสตริงป้อนเข้าเป็นอาร์กิวเมนต์และส่งคืนสตริงเอาต์พุต สมมติ⎕IO( I ndex O rigin) 0ซึ่งเป็นค่าเริ่มต้นในหลาย ๆ ระบบ

{⍵@i''↑⍨1+⌈/i←(⎕A⍳⍵)+⍳≢⍵}

ลองออนไลน์!

{} แลมบ์ดานิรนาม แสดงถึงการโต้แย้ง

≢⍵ การนับรวมของการโต้แย้ง

 กว่าหลายɩ ntegers (0 ... LengthOfArgument-1)

()+ บวก:

  ⎕A⍳⍵ ดัชนีของการโต้แย้งในตัวพิมพ์ใหญ่A lphabet

i← ติดตั้งในi(สำหรับi ndices)

⌈/ สูงสุด (ลดลง)

1+ เพิ่มหนึ่ง

''↑⍨ ใช้ตัวละครหลายตัวจากสตริงที่ว่างเปล่าซึ่งมีช่องว่างตามต้องการ

 ให้ผลผลิตที่ (ทำหน้าที่แยกiจาก'')

⍵@i แก้ไขว่ามีตัวอักษรโต้แย้งที่iดัชนี



1

Pyth , 44 38 ไบต์

Striked out 44 ยังคงเป็น 44 :(

เริ่มต้น Bloody Pyth

บันทึกแล้ว 6 ไบต์ขอบคุณ @Mr Xcoder

K*d+lz26Vlz K=XK-C@zN-65N@zN;.WqeHdPZK

ลองออนไลน์!


อย่างไร?

K*d+lz26Vlz K=XK-C@zN-65N@zN;.WqeHdPZK          Full program

K*d+lz26                                        Assign a string consisting of 
                                                  (26 + input.length) whitespaces to K
        Vlz                                     For-loop from 0 to input.length
                -C@zN-65N                       Calculate the index for the current letter
                         @zN                    The current letter
            K=XK                                Insert the current letter into K at
                                                  position i
                            ;                   End statement
                             .WqeHdPZK          While the last character of H is not a 
                                                  whitespace, pop the last character off K

38 K*d+lz26Vlz K=XK-C@zN-65N@zN;.WqeHdPZKไบต์: WqeKd K=PK;Kจะถูกแทนที่ด้วย.W(ในขณะที่ทำงาน) และข้อโต้แย้งของหลักสูตรและFNrZlzสามารถเปลี่ยนได้VrZlzแต่rZ...วิธีการU...และจะถูกสร้างขึ้นโดยอัตโนมัติU Vดังนั้นFNrZlzจะกลายเป็นVlz
นาย Xcoder

1

แบตช์418 331 ไบต์

ใช้งานได้กับตัวอักษรตัวพิมพ์ใหญ่เท่านั้นและจะใช้เวลาสักครู่เพื่อให้สายยาวขึ้น

เรียนรู้เทคนิคใหม่ที่นี่ตัวละครเพื่อการแปลงค่า ASCII %=exitcodeAscii%ใช้ นอกจากนี้if definedและการเข้าถึง "อาร์เรย์" callโดยใช้ นอกจากนี้การตีกอล์ฟเกือบ 100 ไบต์ก็เป็นการฝึกสอนกอล์ฟรหัสที่ดี

set z=setหมายเหตุท้ายในพื้นที่

@echo off
setlocal EnableDelayedExpansion
set z=set 
%z%a=%1
:a
%z%v=64
:b
%z%/Av+=1
cmd/Cexit %v%
if %=exitcodeAscii% neq %a:~0,1% goto b
%z%/Ao=v+c
%z%a%o%=%a:~0,1%
if %o%. geq %m%. %z%m=%o%
%z%/Ac+=1
%z%a=%a:~1%
if %a%. neq . goto a
for /l %%n in (65,1,%m%)do (
if defined a%%n (call %z%r=%%r%%%%a%%n%%
)else %z%r=!r! )
echo %r%


1

ไอบีเอ็มพีซีดอส 8088 สภา ,34 33 ไบต์

b403 cd10 be80 00ad 8bc8 32ed ac8b de02 d880 ebc4 8ad3 b402 cd10 b40e cd10 e2ec c3

Ungolfed (ไม่ประกอบชิ้นส่วน):

    MOV  AH, 03H        ; get current cursor position row into DH
    INT  10H
    MOV  SI, 80H        ; point SI to PSP
    LODSW               ; fetch length into AL, increment SI to 82H
    MOV  CX, AX         ; move to CX
    XOR  CH, CH         ; clear CH
OUTPUT:
    LODSB               ; load DS:SI into AL
    MOV  BX, SI         ; input string offset into BX (so doesn't overwrite DH)
    ADD  BL, AL         ; add ASCII value of char
    SUB  BL, 'A'+83H    ; convert to numeric val (A=0, Z=25)
    MOV  DL, BL         ; DL is column number
    MOV  AH, 02H        ; BIOS set cursor position function    
    INT  10H            ; move to column
    MOV  AH, 0EH        ; BIOS display char function in AL
    INT  10H            ; write to screen
    LOOP OUTPUT
    RET                 ; return to DOS

นี่เป็น PC DOS แบบสมบูรณ์ที่สามารถนำสตริงอินพุตจากบรรทัดคำสั่งและพิมพ์เวอร์ชัน "เร็ว" ใหม่ลงบนหน้าจอ ต้องการขั้นต่ำของ DOS 1.0 ... หวังว่าคุณจะได้รับอย่างน้อย

เอาท์พุต

A>SPEED.COM ABC
A B C
A>SPEED.COM AZ
A                         Z
A>SPEED.COM CBA
  A
A>SPEED.COM HELLOWORLD
     E H    DLL   OLO   R  W

0

PHP, 127 123 ไบต์

function b($i){for($q=0;$q<strlen($i);$q++){$n[ord($i[$q])-65]=$i[$q];}while($x++<26){$m.=$n[$x-1]?$n[$x-1]:" ";}return$m;}

ลองออนไลน์

ต้องแก้ไขข้อผิดพลาดที่จะไม่ส่งออก 'A' ...


สำหรับผู้ที่ถูกลดระดับลง: คุณอาจคลิกปุ่มขึ้นผิด โปรดแก้ไขหรือปล่อยฉันลงบนบรรทัดว่าทำไม downvote ... Tnx
steenbergh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.