จดหมายย้าย! จุด 2


14

ตัวอักษรตัวแรกรับการเคลื่อนย้าย! เป็นที่นิยมมาก แต่มีส่วนร่วม จำกัด อันนี้จะแก้ได้ง่ายขึ้น แต่หวังว่าจะมีลูกเล่นในการตีกอล์ฟ

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

ตัวอย่าง:

"ยีราฟ"

  • 'g' เป็นตัวอักษรตัวที่ 7 ในตัวอักษรมันเป็นตัวอักษรที่ 7 จากด้านหลังแล้วดังนั้นทิ้งไว้
  • 'i' เป็นตัวอักษรที่ 9 เนื่องจาก 9 มีขนาดใหญ่กว่าความยาวของคำจึงไปที่ด้านหน้าดังนั้นสตริงจึงกลายเป็น igraffe
  • 'r' เป็นตัวอักษรที่ 18 เหมือนกับ 'i' ซึ่งจะอยู่ด้านหน้า: rigaffe
  • 'a' เป็นตัวอักษรตัวที่ 1 มันไปถึงจุดสิ้นสุด: rigffea
  • 'f' เป็นตัวอักษรตัวที่ 6 มันจะกลายเป็นตัวที่ 6 จากด้านหลัง: rfigfea
  • ถัดไป 'f' เป็นตัวอักษรตัวที่ 6 ดังนั้นมันจึงไปที่อันดับ 6 จากด้านหลัง: rffigea
  • 'e' เป็นตัวอักษรตัวที่ 5 มันไปที่ตัวที่ 5 จากด้านหลัง: rfefiga

"ดอกไม้"

  • 'f' (6) => flower
  • 'l' (12) => lfower
  • 'o' (15) => olfwer
  • 'w' (23) => wolfer
  • 'e' (5) => weolfr
  • 'r' (18) => rweolf

"สัปปะรด"

  • 'p' (16) => pineapple
  • 'i' (9) => ipneapple
  • 'n' (14) => nipeapple
  • 'e' (5) => nipaepple
  • 'a' (1) => nipepplea
  • 'p' (16) => pnipeplea
  • 'p' (16) => ppnipelea
  • 'l' (12) => lppnipeea
  • 'e' (5) => lppneipea(ตรวจสอบให้แน่ใจว่าคุณย้ายeที่ยังไม่ได้ย้ายไปแล้ว! ที่นี่มันไม่สำคัญ

ขอบคุณ @Neil สำหรับการปรับปรุงกรณีทดสอบด้วย 3 ส่วนต่อไปนี้:

"พิซซ่า"

  • 'p' (16) => pizza
  • 'i' (9) => ipzza
  • 'z' (26) => zipza
  • 'z' (26) => zzipa(ย้าย z ตัวที่สอง!)
  • 'a' (1) => zzipa

"ไม่มีความหมาย"

  • 'a' (1) => bracadabraa
  • 'b' (2) => racadabraba
  • 'r' (18) => racadabraba
  • 'a' (1) => rcadabrabaa
  • 'c' (3) => radabrabcaa
  • 'a' (1) => rdabrabcaaa
  • 'd' (4) => rabrabcdaaa
  • 'a' (1) => rbrabcdaaaa
  • 'b' (2) => rrabcdaaaba
  • 'r' (18) => rrabcdaaaba
  • 'a' (1) => rrbcdaaabaa

"ตัวอักษร"

  • 'c' (3) => haractecrs
  • 'h' (8) => arhactecrs
  • 'a' (1) => rhactecrsa
  • 'r' (18) => rhactecrsa
  • 'a' (1) => rhctecrsaa
  • 'c' (3) => rhtecrscaa
  • 't' (20) => trhecrscaa
  • 'e' (5) => trhcrescaa
  • 'r' (18) => rtrhcescaa
  • 's' (19) => srtrhcecaa

คำตอบ:



4

Python 3, 78 ไบต์

บันทึก 2 ไบต์ขอบคุณ orlp
บันทึกแล้ว 7 ไบต์ด้วย DSM

x=input()
y=[]
for z in x:m=max(len(x)-ord(z)+96,0);y[m:m]=z
print(''.join(y))

สร้างคำเป็นรายการจากนั้นก็เข้าร่วม


(q-p,0)[p>q]min(q-p,0)มีความยาวมากกว่า
orlp

มันเป็น แต่นั่นไม่ได้ทำสิ่งเดียวกัน มันจะคืนค่า 0 หรือค่าลบเสมอ
Morgan Thrapp

max(q-p,0)ขออภัยฉันหมายถึง
orlp

3

Python 2, 86 ไบต์

a=input();k=list(a)
for i in a:k.remove(i);k.insert(ord(i)-97,i)
print"".join(k)[::-1]

Python 3, 88 ไบต์

a=input();k=list(a)
for i in a:k.remove(i);k.insert(ord(i)-97,i)
print("".join(k)[::-1])

ตัวอย่าง

Python 2:

$ python2 test.py
"flower"
rweolf

Python 3:

$ python3 test.py
flower
rweolf

3
k.removebaaเอาตัวอย่างแรกนี้จึงเป็นไปได้ที่จะล้มเหลวบางอย่างเช่น
Sp3000

2

Javascript ES6, 136 134 131 ไบต์

s=>([...s].map(c=>{s=s.replace(c,'');p=s.length+97-c.charCodeAt();s=s.substr(0,p)+c.toUpperCase()+s.substring(p)}),s.toLowerCase())

โปรดทราบว่าฉันดูแลที่ดีไม่ได้ที่จะย้ายตัวละครเดียวกันสองครั้งมิฉะนั้นpizzaจะกลายเป็นเมื่อมันควรจะเป็นzipza zzipaนอกจากนี้ยังมีกรณีที่เกี่ยวข้องกับการไม่ลบตัวอักษรก่อนกำหนด; charactersกลายเป็นบางทีsrtrchaeacหรือsrtrheccaaถ้าคุณทำมันผิด srtrhcecaaแต่มันควรจะเป็น อีกคำที่ยุ่งยากabracadabraสำหรับการที่ผลลัพธ์rrabaaadcbaจะไม่ถูกต้อง;rrbcdaaabaaจะถูกต้อง

แก้ไข: ลบออกสองไบต์โดยใช้สตริงย่อยซึ่งทำการรวมอาร์กิวเมนต์โดยอัตโนมัติกับช่วง 0..length

แก้ไข: ลบออกสามไบต์โดยเปลี่ยนสตริงย่อยแรกเป็นสตริงย่อยตามที่ผู้ใช้แนะนำ 81665


ฉันคิดว่าคุณสามารถใช้แทนsubstr substring
user81655

sliceดีกว่า (ฉันคิดว่า)
Mama Fun Roll

@ ՊՓԼՃՐՊՃՈԲՍԼเขาทำไม่ได้เพราะผ่านตัวเลขติดลบมาsliceแบ่งมัน
user81655

โอ้ลืมไปแล้ว
Mama Fun Roll

ใช่มีข้อผิดพลาดเล็กน้อยกับpizzaกรณีทดสอบที่คุณโพสต์ไว้ แต่ฉันแก้ไข
geokavel

1

Pyth, 18 17 ไบต์

uXeS,Z-lzhx;HGHzk

Test Suite

ทำซ้ำโดยใช้การย่อขนาดลงบนสตริงอินพุตแทรกลงในสตริงสตริงว่างเปล่ากรณีฐานที่ตำแหน่งที่ถูกต้อง


1

𝔼𝕊𝕄𝕚𝕟, 23 ตัวอักษร / 40 ไบต์

ᴉⓜΞăМƲ ïꝈ-ᶛą$,0),0,$;Ξ⨝

Try it here (Firefox only).

คำอธิบาย

ᴉⓜΞăМƲ ïꝈ-ᶛą$,0),0,$;Ξ⨝ // implicit: ï=input, ᴉ=input split into chars, Ξ=empty array, ᶛ=lowercase alphabet
ᴉⓜ                      // map over input chars
   ΞăМƲ ïꝈ-ᶛą$,0),0,$;   // use splice to insert map item into Ξ at requested index
                      Ξ⨝ // join Ξ
                         // implicit output
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.