Mektuplar, Harekete Geç! Pt. 2


14

İlk Harfler, Hareket Edin! çok popülerdi, ancak katılımı sınırlıydı. Bunu çözmek daha kolay olacak, ancak umarım golfte bazı püf noktaları içerir.

Size yalnızca küçük harflerden oluşan bir dize verilir. Her harfin için, alfabe içinde pozisyonuyla m o olur, böylece taşımak m ucundan inci mektubu. M değeri dizenin uzunluğundan daha uzunsa, onu en öne taşıyın. Yalnızca tamamen dönüştürülmüş dizeyi çıktılar.

Örnekler:

"zürafa"

  • 'g' alfabedeki 7. harftir, zaten arkadan 7. harftir, bırakın.
  • 'i' 9. harftir, çünkü 9 kelimenin uzunluğundan daha büyük olduğundan, öne gider, böylece dize olur igraffe
  • 'r' 18. harftir, 'i' gibi öne gider: rigaffe
  • 'a' 1. harftir, sonuna kadar gider: rigffea
  • 'f' 6. harf, arkadan 6. harf olur: rfigfea
  • sonraki 'f' de 6. harftir, bu yüzden arkadan 6. rakama gider: rffigea
  • 'e' 5. harftir, arkadan 5. harfe gider: rfefiga

"çiçek"

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

"Ananas"

  • '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( önceden taşınmamış olan e'yi hareket ettirdiğinizden emin olun ! Burada önemli değil, ama altında.)

Bu 3 eklemeyle test senaryolarını geliştirdiği için @Neil'e teşekkürler:

"Pizza"

  • 'p' (16) => pizza
  • 'i' (9) => ipzza
  • 'z' (26) => zipza
  • 'z' (26) => zzipa(ikinci z hareket ettiriliyor!)
  • 'a' (1) => zzipa

"Abrakadabra"

  • '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

"Karakterler"

  • '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

Yanıtlar:



4

Python 3, 78 bayt.

Orlp sayesinde 2 bayt kaydedildi.
DSM sayesinde 7 bayt tasarruf etti.

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

Sözcüğü liste olarak oluşturur ve birleştirir.


(q-p,0)[p>q]daha uzun min(q-p,0).
orlp

Öyle, ama bu aynı şeyi yapmıyor. Bu her zaman 0 veya negatif olur.
Morgan Thrapp

Üzgünüm, demek istedim max(q-p,0).
orlp

3

Python 2, 86 bayt

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 bayt

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

Örnekler

Python 2:

$ python2 test.py
"flower"
rweolf

Python 3:

$ python3 test.py
flower
rweolf

3
k.removeilk örneği kaldırır, bu yüzden böyle bir şey için başarısız olur baa.
Sp3000

2

JavaScript ES6, 136 134 131 bayt

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

Aynı karakteri iki kez hareket ettirmemeye çok dikkat ettiğimi unutmayın, aksi takdirde olması gerektiği yere pizzadönüşür . Ayrıca, karakterleri erken kaldırmama ile ilgili bir uç durum da var; belki olur ya da yanlış yaparsanız ama olması gerekir . Çıktının yanlış olacağı bir başka zor kelime ; doğru olur.zipzazzipacharacterssrtrchaeacsrtrheccaasrtrhcecaaabracadabrarrabaaadcbarrbcdaaabaa

Düzenleme: Bağımsız değişkenlerini 0..length aralığına otomatik olarak zorlayan alt dize kullanarak iki bayt kapatıldı.

Düzenleme: user81665 tarafından önerildiği gibi ilk alt dizeyi substr olarak değiştirerek üç bayt silindi.


Bunun substryerine kullanabileceğinizi düşünüyorum substring.
user81655

slicedaha iyi (sanırım).
Mama Fun Roll

@ Can't Yapamaz, çünkü negatif sayıları sliceona böler.
user81655

oh unutmuşum.
Mama Fun Roll

Evet, pizzayazıma koyduğunuz test davasında küçük bir hata oluştu , ama düzelttim.
geokavel

1

Pyth, 18 17 bayt

uXeS,Z-lzhx;HGHzk

Test Takımı .

Giriş dizesi üzerinde azaltma kullanarak, doğru konumda bir dize, temel durum boş dizesi ekleyerek yinelenir.


1

𝔼𝕊𝕄𝕚𝕟, 23 karakter / 40 bayt

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

Try it here (Firefox only).

açıklama

ᴉⓜΞăМƲ ïꝈ-ᶛą$,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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.