เคมบริดจ์ขนย้าย


21

ฉันแน่ใจว่าส่วนใหญ่ของคุณได้เจอสิ่งนี้ในบางจุดหรือไม่:

เมื่อมองไปที่การค้นหาที่ Cmabrigde Uinervtisy มันไม่ได้เป็นเพียงแค่คนที่อยู่ในความอัปยศ, olny iprmoetnt tihng นั้นเป็นคนแรก rset สามารถเป็นโทเค็น mses และคุณสามารถเพิ่มได้ด้วย porbelm Tihs คือ bcuseae huamn mnid deos ไม่ได้ยก ervey lteter โดย istlef แต่ wrod เป็น wlohe

  • สร้างโปรแกรมที่ป้อนข้อความจำนวนเท่าใดก็ได้ สำหรับวัตถุประสงค์ในการทดสอบให้ใช้ข้อความด้านบนที่ไม่มีข้อความในเวอร์ชันด้านล่าง

  • โปรแกรมจะต้องแปลงตัวอักษรของแต่ละคำด้วยความยาว 4 ตัวอักษรขึ้นไปยกเว้นตัวอักษรตัวแรกและตัวสุดท้ายของแต่ละคำ

  • การจัดรูปแบบอื่น ๆ ทั้งหมดจะต้องยังคงเหมือนเดิม (ตัวพิมพ์ใหญ่และเครื่องหมายวรรคตอน ฯลฯ )

ข้อความทดสอบ:

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

ตามปกตินี่คือรหัสกอล์ฟ รหัสที่สั้นที่สุดชนะ


2
คล้ายกับวิธีการสุ่มตัวอักษรในคำแม้ว่าในนั้นจะต้องมีเพียงคำเดียวเท่านั้นที่จะต้องมีสัญญาณรบกวนในขณะที่ที่นี่มันทุกคำในประโยค
Gareth

ฉันเห็นด้วย. คำถามมีความคล้ายคลึงกันมากพอที่จะแก้ปัญหาสำหรับปัญหาหนึ่งได้โดยตรง
โม่

1
จดหมายฉบับสุดท้ายไม่ถูกต้องในrscheearchข้อความตัวอย่างของคุณ
daniero

10
ฉันจะประทับใจมากขึ้นกับโปรแกรมที่ย้อนกลับ (เช่นอินพุตคือข้อความที่มีสัญญาณรบกวน)
นาย Lister

1
ตำแหน่งของอะพอสโทรฟีต้องdon'tอยู่ในตำแหน่งเดียวกันหรือไม่? ข้อมูลจำเพาะกล่าวว่าAll other formatting must remain the same (capitalization and punctuation, etc.).แต่ผมไม่แน่ใจว่าวิธีการทำงานออกจากที่นี่ ...
Gaffi

คำตอบ:


9

Ruby - 50 48 ตัวอักษรรวมทั้ง-pพารามิเตอร์บรรทัดคำสั่ง

gsub(/(?<=\w)\w+(?=\w)/){[*$&.chars].shuffle*''}

ขอบคุณ @primo สำหรับ 2 ถ่าน

ทดสอบ

➜  codegolf git:(master) ruby -p 9261-cambridge-transposition.rb < 9261.in
Acdrcinog to a racreseher at Cagribmde Ursvetniiy, it dsoen't mttaer in waht odrer the leertts in a word are, the olny ionarpmtt tnhig is that the fsirt and last letetr be at the rghit pcale. The rset can be a taotl mses and you can slitl raed it wthiuot perlbom. Tihs is buaecse the hmuan mind does not raed ervey lteetr by ietlsf but the word as a wlhoe.

1
Ruby ไม่สนับสนุนการ\Kยืนยันความกว้างของการมองด้านหลังใช่หรือไม่ นอกจากนี้ยังมีการจัดกลุ่มในสุดไม่จำเป็นใช้แทน$& $1
โม่

@primo ฉันไม่คิดว่ามันใช้งานไม่ได้และฉันไม่พบมันในหน้าอ้างอิงใด ๆ ขอบคุณสำหรับ$&เคล็ดลับ :)
Dogbert

คุณถูก. ผมคิดว่าผมสันนิษฐานว่าพวกเขาได้รับ Perl regex โดยตรงเช่น PHP ไม่;)
พรีโม่

3
บอกฉันเพิ่มเติมเกี่ยวกับcodegolfสคริปต์นี้
Sparr

1
หลายปีต่อมา แต่: ไม่จำเป็นต้องสร้างอาร์เรย์ใหม่ก่อนสลับ: [*$&.chars]=> $&.charsประหยัด 3 ไบต์
daniero

5

Python, 118

Python ค่อนข้างน่าอึดอัดใจอย่างมากสำหรับสิ่งนี้!

from random import*
for w in raw_input().split():l=len(w)-2;print l>0and w[0]+''.join((sample(w[1:-1],l)))+w[-1]or w,

โบนัส

ฉันลองสิ่งอื่น ๆ ที่ฉันคิดว่าฉลาด แต่คุณต้องนำเข้าทุกสิ่งและวิธีการมากมายไม่มีค่าตอบแทน แต่ต้องเรียกแยกต่างหากเป็นคำสั่งของมันเอง ที่แย่ที่สุดคือเมื่อคุณต้องการแปลงสตริงเป็นรายการแล้วjoinนำกลับมาเป็นสตริงอีกครั้ง

อย่างไรก็ตามนี่คือบางสิ่งที่ฉันได้ลอง:

regex!
import re,random
def f(x):a,b,c=x.group(1,2,3);return a+''.join(random.sample(b,len(b)))+c
print re.sub('(\w)(\w+)(\w)',f,raw_input())
พีชคณิต!
import itertools as i,random as r
for w in raw_input().split():print''.join(r.choice([x for x in i.permutations(w)if w[0]+w[-1]==x[0]+x[-1]])),
คุณไม่สามารถสลับพาร์ทิชั่นของรายการโดยตรงและshuffleส่งคืนNoneได้!
from random import*
for w in raw_input().split():
 w=list(w)
 if len(w)>3:v=w[1:-1];shuffle(v);w[1:-1]=v
 print ''.join(w),

4

PHP 84 ไบต์

<?for(;$s=fgets(STDIN);)echo preg_filter('/\w\K\w+(?=\w)/e','str_shuffle("\0")',$s);

ใช้ regex คำจับภาพที่มีอย่างน้อย4 3 ตัวอักษรยาวและสับตัวละครภายใน รหัสนี้สามารถจัดการอินพุตที่มีหลายบรรทัดได้เช่นกัน

หากต้องการอินพุตเพียงหนึ่งบรรทัด (เช่นในตัวอย่าง) ค่านี้สามารถลดได้ถึง68 ไบต์

<?=preg_filter('/\w\K\w+(?=\w)/e','str_shuffle("\0")',fgets(STDIN));

มีตัวอักษรตรงกลางเพียงตัวเดียวดังนั้นจึงไม่สำคัญว่าคุณจะสับเปลี่ยน


3

J (48)

''[1!:2&4('\w(\w+)\w';,1)({~?~@#)rxapply 1!:1[3

คำอธิบาย:

  • 1!:1[3: อ่านอินพุตทั้งหมดจาก stdin
  • rxapply: ใช้ฟังก์ชันที่กำหนดให้กับส่วนต่าง ๆ ของอินพุตที่ตรงกับ regex
  • ({~?~@#): กริยารถไฟที่สับอินพุต: #นับความยาวสิ่งนี้จะถูกนำไปใช้กับทั้งสองด้านของการ?ให้ N จำนวนที่แตกต่างกันจาก 0 ถึง N {จากนั้นเลือกองค์ประกอบที่ดัชนีเหล่านั้นจากอาร์เรย์อินพุต
  • ('\w(\w+)\w';,1): ใช้ regex นั้น แต่ใช้ค่าจากกลุ่มแรกเท่านั้น
  • [1!:2&4: ส่งเอาต์พุตที่ไม่ได้ฟอร์แมตไปยัง stdout
  • ''[: ระงับเอาต์พุตที่จัดรูปแบบแล้ว ...นี้เป็นสิ่งจำเป็นเพราะมิฉะนั้นก็เพียงเอาท์พุทเป็นส่วนหนึ่งของการส่งออกที่เหมาะกับในสายขั้วแล้วจบลงด้วย

3

เรติน่า 10 ไบต์

?V`\B\w+\B

ลองออนไลน์!

เฮ้ความท้าทายเก่า ๆ นี้ถูกสร้างขึ้นสำหรับจอประสาทตาใหม่!

คำอธิบาย

\B\w+\Bจับคู่กลุ่มของตัวอักษรระหว่างที่ไม่มีขอบเขตนั่นคือกลุ่มของตัวอักษรที่ไม่ได้เริ่มหรือลงท้ายด้วยคำ เนื่องจาก regexes เป็นโลภนี่จะจับคู่ตัวอักษรทั้งหมดของคำยกเว้นตัวแรกและตัวสุดท้าย

Vคือสเตจ "ย้อนกลับ" ที่กลับลำดับของตัวละครในแต่ละการแข่งขันของ regex ด้วย?ตัวเลือกมันกวนพวกเขาแทน


ฉันพบสิ่งนี้หลังจากหาโซลูชัน 10 ไบต์อีกครั้ง
FryAmTheEggman

1

APL 107

น่าเสียดายที่ล่าม APL ของฉันไม่สนับสนุน regex ดังนั้นนี่เป็นเวอร์ชันสะสมที่บ้านซึ่งข้อความที่จะแปลงสัญญาณรบกวนจะถูกเก็บไว้ในตัวแปร t:

⎕av[((~z)\(∊y)[∊(+\0,¯1↓n)+¨n?¨n←⍴¨y←(~z←×(~x)+(x>¯1↓0,x)+x>1↓(x←~53≤(∊(⊂⍳26)+¨65 97)⍳v←⎕av⍳,t),0)⊂v])+z×v]

โดยพื้นฐานแล้วโค้ดจะแบ่งข้อความออกเป็นคำตามตัวอักษรของตัวอักษรเท่านั้นและจากนั้นจะเป็นตัวอักษรระหว่างตัวอักษรตัวแรกและตัวสุดท้ายของคำเหล่านั้น ตัวอักษรเหล่านี้จะมีสัญญาณรบกวนและสายอักขระทั้งหมดประกอบขึ้นใหม่


1

APL, 58 49

ฉันเชื่อว่าใช้งานได้ใน IBM APL2 (ฉันไม่มี IBM APL)

({⍵[⌽∪t,⌽∪1,?⍨t←⍴⍵]}¨x⊂⍨~b),.,x⊂⍨b←' ,.'∊⍨x←⍞,' '

ถ้าไม่เช่นนั้นใน Dyalog APL ให้เพิ่มที่ด้านหน้า:

 ⎕ML←3⋄

ซึ่งเพิ่ม 6 ตัวอักษร


สิ่งนี้ถือว่าอักขระที่ไม่ใช่คำเดียวคือช่องว่างเครื่องหมายจุลภาคและจุด


ยังคงสามารถเล่นได้ แต่ฉันไม่มีสัญลักษณ์ APL บน iPhone ...
TwiNight

1

VBA, 351 373 /409

Sub v(g)
m=1:Z=Split(g," "):j=UBound(Z)
For u=0 To j
t=Z(u):w=Len(t):l=Right(t,1):If Not l Like"[A-Za-z]" Then w=w-1:t=Left(t,w):e=l Else e=""
If w>3 Then
n=Left(t,1):p=w-1:s=Right(t,p):f=Right(t,1)
For p=1 To p-1
q=w-p:r=Int((q-1)*Rnd())+1:n=n & Mid(s,r,1):s=Left(s,r-1) & Right(s,q-r)
Next
Else
n=t:f=""
End If
d=d & n & f & e & " "
Next
g=d
End Sub

วิธีสำรอง (ใหญ่กว่า):

Sub v(g)
m=1:Z=Split(g," "):j=UBound(Z)
For u=0 To j
t=Split(StrConv(Z(u),64),Chr(0)):w=UBound(t)-1:l=Asc(t(w)):If l<64 Or (l>90 And l<97) Or l>122 Then e=t(w):w=w-1 Else e=""
If w>3 Then
n=t(0):p=w-1:s=""
For i=-p To -1
s=t(-i) & s
Next
f=t(w)
For p=1 To p-1
r=Int((w-p)*Rnd())+1:n=n & Mid(s,r,1):s=Left(s,r-1) & Right(s,w-p-r)
Next
n=n & s
Else
n=Z(u):f="":e=""
End If
d=d & n & f & e & " "
Next
g=d
End Sub

Subทั้งสองวิธีการเหล่านี้เปลี่ยนค่าของตัวแปรส่งผ่านไปยัง กล่าวคือ

Sub Test()
strTestString = "This is a test."
v strTestString
Debug.Print strTestString
End Sub

จะเอาท์พุทแบบนี้:

"Tihs is a tset."

นอกจากนี้ยังใช้การเว้นวรรคตอนกลางคำแบบสุ่มดังนั้นจึงอาจไม่ตรงกับข้อมูลจำเพาะ 100%


1

APL NARS 172 ตัวอักษร

r←g x;i;s;d;k
s←⎕AV[98..123]∪⎕A
i←1⋄v←''⋄r←''⋄k←⍴x
A:d←''⋄→C×⍳i>k⋄d←x[i]⋄→C×⍳∼d∊s⋄v←v,d⋄i+←1⋄→A
C:v←{t←¯2+⍴r←⍵⋄t≤1:r⋄r[1+t?t]←⍵[1+⍳t]⋄r}v
r←∊r,v,d
v←''⋄i+←1⋄→A×⍳i≤k
g x←⍞

13 + 17 + 18 + 44 + 41 + 8 + 17 + 5 + 9 = 172; ฟังก์ชันนี้ g () มีอินพุตเป็นสตริง มีเอาต์พุตเป็นสตริง ฉันเพิ่มคำสั่งอินพุตเพราะฉันไม่รู้ว่าการแทรก \ 'ในสตริงที่ยกมา แสดงความคิดเห็น

∇r←g x;i;s;d;k
   ⍝ words are element of  a-zA-Z separed from all other
   s←⎕AV[98..123]∪⎕A ⍝a-zA-Z ascii ⎕IO = 1
   i←1⋄v←''⋄r←''⋄k←⍴x
A:   d←''⋄→C×⍳i>k⋄d←x[i]⋄→C×⍳∼d∊s⋄v←v,d⋄i+←1⋄→A
C:      v←{t←¯2+⍴r←⍵⋄t≤1:r⋄r[1+t?t]←⍵[1+⍳t]⋄r}v
        r←∊r,v,d
        v←''⋄i+←1⋄→A×⍳i≤k
∇

ผล

g x←⍞
According to a researcher at Cambridge University, it doesn't matter in what order the letters in a word are, the only important thing is that the first and last letter be at the right place. The rest can be a total mess and you can still read it without problem. This is because the human mind does not read every letter by itself but the word as a whole.
  Androiccg to a rhraeecser at Cgirbdmae Uirevtsiny, it deson't mtetar in waht oderr the ltrtees in a wrod are, the olny intro
  apmt tinhg is taht the frsit and lsat lteter be at the rghit pacle. The rset can be a ttaol mses and you can siltl rae
  d it wtuhoit poeblrm. Tihs is bcsauee the hmaun mnid deos not raed eervy lteter by isletf but the wrod as a wolhe.

1

PHP 7.1, ไม่ใช่การแข่งขัน, 80 ไบต์

for(;$w=$argv[++$i];)echo$w[3]?$w[0].str_shuffle(substr($w,1,-1)).$w[-1]:$w," ";

รับอินพุตจากอาร์กิวเมนต์บรรทัดรับคำสั่ง -nrทำงานด้วย (เห็นได้ชัดว่าจะล้มเหลวในเครื่องหมายวรรคตอน)


1

PHP, 94 + 1 ไบต์

+1 สำหรับการ-Rตั้งค่าสถานะ

<?=preg_replace_callback("/(?<=\w)\w+(?=\w)/",function($m){return str_shuffle($m[0]);},$argn);

ใส่ท่อผ่าน php -nR '<code>'ท่อผ่านการป้อนข้อมูล

หมายเหตุ: preg_replace_callbackมาถึง PHP ใน 4.0.5; การปิดถูกนำมาใช้ใน php 5.3;
ดังนั้นสิ่งนี้ต้องใช้ PHP 5.3 หรือใหม่กว่า

น่าเสียดายที่การจับคู่นั้นถูกส่งเป็นอาร์เรย์เสมอแม้ว่าจะไม่มีรูปแบบย่อย
ดังนั้นฉันจึงไม่สามารถใช้str_shuffleเป็นการโทรกลับซึ่งจะประหยัดได้ 29 ไบต์


1

JavaScript, 76 67 ไบต์

ขอบคุณArnauldสำหรับ -9 ไบต์

t=>t.replace(/\B\w+\B/g,m=>[...m].sort(_=>Math.random()-.5).join``)

ลองออนไลน์!


Ungolfed

t =>                  // function with a single argument
     t.replace(       // Replace ...
         /\B\w+\B/g,  // every match of the regex
         m => ...     // with the return value of the replacement function
     )

/       /g            // Match all occurences of
   \w+                // 1 or more word chars ...
 \B   \B              // ... that aren't on the beginning or end of the word

m =>                  // Replacement function
     [...m]           // convert matched string to a list of chars
       .sort(_ => Math.random()-.5) // sort with a random comparision function
       .join``        // join the list into a single string


/\B\w+\B/gคุณสามารถใช้ (แต่สำหรับเงินรางวัลโปรดทราบว่าความยาวของรหัสนั้นไม่สำคัญ )
Arnauld

1
@ Arnauld ขอบคุณมาก เช่นนี้ยังคง codegolf ทุกไบต์นับ
ovs

@Arnauld ยังคงใช้กฎการแข่งขันที่จริงจัง
user202729

1
@trejder ฉันได้เพิ่มคำอธิบายที่จะช่วยคุณในการปรับเปลี่ยนรหัสตามความต้องการของคุณ ในรูปแบบปัจจุบันรหัสควรทำงานได้ดีในเบราว์เซอร์ส่วนใหญ่ หากคุณต้องการใช้ในรหัสจริงคุณควรเปลี่ยนวิธีที่จะสลับอักขระเป็นอัลกอริธึมที่เหมือนกัน
ovs

0

R, 179

ใช้ฟังก์ชั่นที่ฉันเขียนสำหรับตัวอักษรแบบสุ่มในปัญหาคำ :

การป้อนข้อมูล:

s <- "According to a researcher at Cambridge University, it doesn't matter in what order the letters in a word are, the only important thing is that the first and last letter be at the right place. The rest can be a total mess and you can still read it without problem. This is because the human mind does not read every letter by itself but the word as a whole."

วิธีการแก้:

f=function(w){l=length;s=strsplit(w,"")[[1]];ifelse(l(s)<3,w,paste(c(s[1],sample(s[2:(l(s)-1)]),s[l(s)]),collapse=""))}
g=Vectorize(f)
paste(g(strsplit(s," ")[[1]]), collapse=" ")

ผล:

[1] "Arioccdng to a reehaecrsr at Cabrgimde Uveirisnyt, it des'not mttear in waht odrer the lttrees in a wrod are, the olny inpotmart thnig is that the fsrit and lsat letetr be at the right palce. The rset can be a toatl mses and you can stlil raed it wutioht pmrlebo. This is bsuceae the hmuan mnid deos not read ervey lteetr by iesltf but the word as a wleho."


0

Japt , 32 ไบต์

m@Xl ¨4?Xg0 +Xs1J ö(x) +XgJ:X}" 

ลองออนไลน์!


ฉันสามารถรัน Japt โดยตรงในเบราว์เซอร์ได้หรือไม่? หากไม่มีไลบรารีภายนอกคอมไพเลอร์ ฯลฯ ? ถ้าไม่เช่นนั้นน่าเสียดายที่ไม่นับตามกฎการจ่ายเงิน (ต้องการโซลูชันที่ทำงานในเว็บเบราว์เซอร์แท้) สิ่งที่สองเนื่องจากฉันคิดว่ากฎดั้งเดิมของ Cambridge Transposition แตกต่างจากที่แสดงเล็กน้อยที่นี่ (ในคำถาม OP) เป็นไปได้ไหมที่จะปรับเปลี่ยนรหัสของคุณเป็นคำที่มีความยาว 5+ ตัวอักษร (แทนที่จะเป็นแบบยาว 4+ ตัวอักษรตามคำถามของ OP)
trejder

1
@trejder การส่งทั้งหมดจะต้องสอดคล้องกับกฎในคำถามเดิม การแก้ไขแบบนี้จะทำให้ใช้งานไม่ได้
user202729

1
@trejder Japt ไม่สามารถเรียกใช้โดยตรงในเบราว์เซอร์ที่ไม่มีคอมไพเลอร์ ประการที่สองหากคุณแทนที่ 4 ในโค้ดด้วย 5 ดังนั้นควรแย่งกันแค่คำยาว 5+ ตัวอักษรเท่านั้น
Bejofo

0

Java, 1557 834 bytes ขอบคุณ @JoKing สำหรับเคล็ดลับ

สายเกินไปที่จะแข่งขัน ลืมว่าฉันได้เริ่มต้นกับปัญหานี้

แข็งแรงเล่นกอล์ฟ

import java.util.*;public class s{ public static void main(String[] args){ Scanner s=new Scanner(System.in);String a=s.next();String[] q=a.split("\\s+");for (int i=0;i<q.length;i++) { q[i]=q[i].replaceAll("[^\\w]", ""); }String f="";for (String z:q) { f+=scramble(z);f+=" "; }System.out.print(f); }private static String scramble(String w){if(w.length()==1||w.length()==2){return w;}char[]l=w.toCharArray();char q=l[w.length()-1];String e=Character.toString(l[0]);char[]n=new char[l.length-2];for(int i=0;i<l.length-2;i++){n[i]=l[i+1];}HashMap<Integer,Character>s=new HashMap<>();int c=1;for(char p:n){s.put(c,p);c++;}HashMap<Integer,Integer>o=new HashMap<>();Random z=new Random();for(int i=0;i<w.length()-2;i++){int m=z.nextInt(n.length);while(o.getOrDefault(m,0) == 1){m=z.nextInt(n.length);}e+=s.get(m+1);o.put(m,1);}return e+=q;}}

Non-แข็งแรงเล่นกอล์ฟ

import java.util.HashMap;
import java.util.Random;

public class SentenceTransposition {
    public static void main(String[] args) {
        String input = "According to a researcher at Cambridge University, it doesn't matter in what order the letters in a word are, the only important thing is that the first and last letter be at the right place. The rest can be a total mess and you can still read it without problem. This is because the human mind does not read every letter by itself but the word as a whole.";
        String[] words = input.split("\\s+");
        for (int i = 0; i < words.length; i++) {
            words[i] = words[i].replaceAll("[^\\w]", "");
        }
        String finalsentence = "";
        for (String word : words) {
            finalsentence += scramble(word);
            finalsentence += " ";
        }
        System.out.println(finalsentence);
    }

    private static String scramble(String word) {
        if (word.length() == 1 || word.length() == 2) {
            return word;
        }
        char[] letters = word.toCharArray();
        char lletter = letters[word.length()-1];
        String endword = Character.toString(letters[0]);
        char[] nletters = new char[letters.length-2];
        for (int i = 0; i < letters.length-2; i++) {
            nletters[i] = letters[i+1];
        }
        HashMap<Integer, Character> set = new HashMap<>();
        int count = 1;
        for (char nletter : nletters) {
            set.put(count, nletter);
            count++;
        }
        HashMap<Integer, Integer> chosen = new HashMap<>();
        Random random = new Random();
        for (int i = 0; i < word.length()-2; i++) {
            int cur = random.nextInt(nletters.length);
            while (chosen.getOrDefault(cur,0) == 1) {
                cur = random.nextInt(nletters.length);
            }
            endword += set.get(cur+1);
            chosen.put(cur, 1);
        }
        return endword += lletter;
    }
}

ดูเหมือนว่ามีช่องว่างมากมายที่คุณสามารถลบออกได้ คุณได้ดูเคล็ดลับสำหรับการเล่นกอล์ฟใน Javaหรือไม่? แก้ไข: นอกจากนี้คุณดูเหมือนจะมีการป้อนข้อมูลรหัสตาย คุณควรรับข้อมูลจากผู้ใช้แทน
Jo King

@ โจกิ้งอาตกลง ฉันจะรับข้อมูลจากผู้ใช้
Jaden Lee

ฉันจัดการตีกอล์ฟนี้ได้ถึง 650 ไบต์ก่อนที่จะรู้ตัวว่ามันไม่ทำงาน
Quintec

@Quintec หมายความว่ารหัสของฉันไม่ทำงานหรือไม่
Jaden Lee

0

Sidef , 89 85 ไบต์

บล็อก (callable นิรนาม):

{.words.map{[_[0],(_.len-1?([_[1..^(_.len-1)]].shuffle...,_[1]):'')].join}.join(' ')}

เอาท์พุทเมื่อใช้เช่น { ... }('..') :

 I hvae nveer not ocne in my life slleepd nhedatarnel crtreolcy
 I have never not once in my lfie sepelld naetadenrhl ccrtloery

ค่อนข้างอึกทึก

.words.map{
  [
    .first,
    (_.len-1
      ? (  [ _[1..^(_.len-1)] ].shuffle..., .last )
      : '')
  ].join
}.join(' ')
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.