कैम्ब्रिज ट्रांसपोजिशन


21

मुझे यकीन है कि सबसे अधिक, यदि आप में से कुछ भी इस बिंदु पर या किसी अन्य पर नहीं आया है :

Cmabrigde Uinervtisy में rscheearch के लिए Aoccdrnig, यह wt में mttaer नहीं करता है और एक wrod में लेटर को oredr करता है, oly iprmoletnt tihng taht frist है और lsat ltteer rghit pclae पर है। आरटेट एक टोस्टल मेज़ हो सकता है और आप साइटल राउड इट विहिट पोरबेलम कर सकते हैं। तिहास bcuseae huamn mnid deos है, जो एलेवेट द्वारा इरेटा लेटर को नहीं उठाया जाता है, लेकिन वोडे के रूप में बजाया जाता है।

  • एक प्रोग्राम बनाएं जो किसी भी राशि के पाठ का इनपुट करे। परीक्षण के प्रयोजनों के लिए, ऊपर पाए गए पाठ के असुरक्षित संस्करण का उपयोग करें।

  • कार्यक्रम को तब प्रत्येक शब्द के अक्षरों को 4 या अधिक अक्षरों की लंबाई के साथ यादृच्छिक रूप से स्थानांतरित करना चाहिए, प्रत्येक शब्द के पहले और अंतिम अक्षर को छोड़कर।

  • अन्य सभी स्वरूपण समान होने चाहिए (पूंजीकरण और विराम चिह्न, आदि)।

परीक्षण पाठ:

कैंब्रिज यूनिवर्सिटी के एक शोधकर्ता के अनुसार, यह मायने नहीं रखता है कि किसी शब्द में अक्षर किस क्रम में हैं, केवल महत्वपूर्ण बात यह है कि पहला और आखिरी पत्र सही जगह पर होना चाहिए। बाकी कुल गड़बड़ हो सकता है और आप अभी भी समस्या के बिना इसे पढ़ सकते हैं। इसका कारण यह है कि मानव मन प्रत्येक अक्षर को स्वयं नहीं बल्कि समग्र रूप से पढ़ता है।

हमेशा की तरह, यह एक कोड-गोल्फ है। सबसे छोटा कोड जीतता है।


2
एक शब्द में अक्षरों को यादृच्छिक बनाने के लिए इसी तरह , हालांकि इसमें केवल एक ही शब्द को तराशा जाना है, जबकि यहां एक वाक्य में प्रत्येक शब्द है।
गारेथ

मैं सहमत हूँ। प्रश्न इतने समान हैं कि एक समस्या के समाधान को दूसरे के लिए लगभग सीधे उपयोग किया जा सकता है।
प्राइमो

1
अंतिम पत्र rscheearchआपके नमूना पाठ में सही नहीं है ।
डेनिएरो

10
मैं एक ऐसे कार्यक्रम से अधिक प्रभावित होता हूँ जो रिवर्स (यानी इनपुट स्क्रैम्बल टेक्स्ट है)।
श्री लिस्टर

1
एपोस्ट्रोफ की don'tस्थिति एक ही स्थिति में रहना चाहिए ? युक्ति कहती है, All other formatting must remain the same (capitalization and punctuation, etc.).लेकिन मुझे यकीन नहीं है कि यहाँ कैसे काम होता है ...
गफ्फी

जवाबों:


9

रूबी - 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
रूबी \Kशून्य-चौड़ाई के पीछे-पीछे मुखरता का समर्थन नहीं करती है ? इसके अलावा, अंतरतम समूहन अनावश्यक है, $&इसके बजाय का उपयोग करना $1
प्राइमो

@primo, मुझे लगता है कि यह काम नहीं करता है, और न ही मैंने इसे किसी संदर्भ पृष्ठ में पाया है। $&टिप के लिए धन्यवाद :)
डॉगबर्ट

आप सही हे। मुझे लगता है मुझे लगता है कि वे perl regex सीधे लिया था, के रूप में php करता है;)
primo

3
इस codegolfलिपि के बारे में मुझे अधिक बताइए
Spear

1
कई साल बाद, लेकिन: फेरबदल से पहले एक नई सरणी बनाने की कोई आवश्यकता नहीं है: [*$&.chars]=> $&.chars, 3 बाइट्स की बचत।
डानिएरो

5

अजगर, ११th

इस तरह की चीजों के लिए अजगर बहुत अजीब है!

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

Letter बीच में केवल एक अक्षर है, इसलिए यदि आप इसे फेरबदल करते हैं तो इससे कोई फर्क नहीं पड़ता।


3

जे (48)

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

स्पष्टीकरण:

  • 1!:1[3: स्टड से सभी इनपुट पढ़ें
  • rxapply: रेगेक्स से मेल खाने वाले इनपुट के अंशों में दिए गए फ़ंक्शन को लागू करें
  • ({~?~@#): एक क्रिया ट्रेन जो अपने इनपुट को फेरबदल करती है: #लंबाई की गणना करती है, यह ?0 से N तक अलग-अलग संख्या देने के लिए दोनों पक्षों पर लागू होती है , {फिर इनपुट सरणी से उन सूचकांकों में तत्वों का चयन करती है।
  • ('\w(\w+)\w';,1): उस regex का उपयोग करें लेकिन केवल पहले समूह से मान का उपयोग करें
  • [1!:2&4: undattatted आउटपुट को stdout में भेजें
  • ''[: स्वरूपित आउटपुट को दबाएं। यह आवश्यक है क्योंकि अन्यथा यह केवल आउटपुट के उस हिस्से को आउटपुट करता है जो टर्मिनल लाइन पर फिट होता है और फिर समाप्त होता है ...

3

रेटिना , 10 बाइट्स

?V`\B\w+\B

इसे ऑनलाइन आज़माएं!

अरे, यह पुरानी चुनौती नए रेटिना के लिए बनाई गई थी!

व्याख्या

\B\w+\Bगैर-सीमाओं के बीच अक्षरों के समूह से मेल खाता है, जो अक्षरों के समूह हैं जो एक शब्द को शुरू या समाप्त नहीं करते हैं। चूंकि रेगीज़ लालची होते हैं, इसलिए यह पहले और अंतिम को छोड़कर किसी शब्द के सभी अक्षरों से मेल खाएगा।

V"रिवर्स" चरण है, जो रेगेक्स के प्रत्येक मैच में वर्णों के क्रम को उलट देता है। ?विकल्प के साथ यह बजाय उन्हें हाथापाई करता है।


मैं एक और 10-बाइट समाधान खोजने के बाद इस पार हुआ ।
FryAmTheEggman

1

एपीएल 107

दुर्भाग्य से मेरे एपीएल दुभाषिया रीगेक्स का समर्थन नहीं करता है, इसलिए यहां एक होम रोल किया गया संस्करण है, जहां स्क्रैम्बल किए जाने वाले पाठ को चर टी में संग्रहीत किया जाता है:

⎕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

एपीएल, ५ AP ४ ९

मेरा मानना ​​है कि यह आईबीएम एपीएल 2 में काम करता है (मेरे पास आईबीएम एपीएल नहीं है)

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

यदि नहीं, तो Dyalog APL में, सामने जोड़ें:

 ⎕ML←3⋄

जो 6 वर्ण जोड़ता है


यह मानता है कि केवल गैर-शब्द वर्ण स्थान, अल्पविराम और अवधि हैं।


अभी भी गोल्फ खेलने योग्य है, लेकिन मेरे पास iPhone पर APL प्रतीक नहीं हैं ...
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; इस फ़ंक्शन जी () में एक स्ट्रिंग के रूप में इनपुट है; एक स्ट्रिंग के रूप में उत्पादन किया है। मैं इनपुट कमांड जोड़ता हूं क्योंकि मुझे पता नहीं है कि एक उद्धृत स्ट्रिंग में कैसे डालें '। टिप्पणी की गई

∇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 बाइट्स

-Rझंडे के लिए +1

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

पाइप इनपुट के माध्यम से php -nR '<code>'

नोट: preg_replace_callback4.0.5 में PHP में आया था; बंद php 5.3 में शुरू किए गए थे;
इसलिए इसके लिए PHP 5.3 या बाद के संस्करण की आवश्यकता होती है।

दुर्भाग्य से, मैच हमेशा एक सरणी के रूप में भेजा जाता है, भले ही कोई उप पैटर्न न हो,
इस प्रकार मैं सिर्फ str_shuffleकॉलबैक के रूप में उपयोग नहीं कर सकता , जो 29 बाइट्स को बचाएगा।


1

जावास्क्रिप्ट, 76 67 बाइट्स

-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 गंभीर दावेदार नियम अभी भी लागू होता है।
user202729

1
@trejder मैंने एक स्पष्टीकरण जोड़ा जो आपको अपनी आवश्यकताओं के लिए कोड को संशोधित करने में मदद करना चाहिए। अपने वर्तमान रूप में कोड को अधिकांश ब्राउज़रों में अच्छी तरह से चलना चाहिए। यदि आप वास्तविक कोड में इसका उपयोग करना चाहते हैं, तो आपको संभवतः उस तरीके को बदलना चाहिए जो अक्षरों को एक समान एल्गोरिथ्म में बदल देता है।
अंडा

0

आर, 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

जाप , 32 बाइट्स

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

इसे ऑनलाइन आज़माएं!


क्या मैं सीधे Japt को एक ब्राउज़र में चला सकता हूँ? बिना किसी बाहरी पुस्तकालयों, संकलक आदि के? यदि नहीं, तो यह दुर्भाग्य से बाउंटी नियमों (शुद्ध वेब ब्राउज़र में काम करने वाले समाधान की आवश्यकता) के अनुसार नहीं है। दूसरी बात, जैसा कि मुझे लगता है कि यहां (ओपी प्रश्न में) कैम्ब्रिज ट्रांसपोजिशन के लिए मूल नियम थोड़े अलग थे। क्या 5 + अक्षर लंबे (4+ अक्षरों के बजाय लंबे, ओपी के प्रश्न में) कोड को अपने कोड को संशोधित करना संभव है?
ट्रेडर

1
@trejder सभी प्रस्तुतियाँ मूल प्रश्न में नियमों के अनुरूप होनी चाहिए। इसे इस तरह संशोधित करना इसे अमान्य बना देगा।
user202729

1
@trejder Japt बिना कंपाइलर के सीधे ब्राउज़र में नहीं चल सकता। दूसरी बात अगर आप 4 को 5 के साथ कोड में बदलते हैं तो यह केवल 5+ अक्षर लंबे शब्दों को स्क्रैम्बल करना चाहिए।
बेजोफो

0

Java, 1557 834 बाइट्स टिप्स के लिए @JoKing को धन्यवाद।

प्रतियोगिता में थोड़ी देर हो गई। भूल गए कि मैंने इस समस्या पर शुरुआत की थी।

golfed

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;}}

गैर golfed

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;
    }
}

ऐसा लगता है कि बहुत सारे व्हाट्सएप हैं जिन्हें आप हटा सकते हैं। क्या आपने जावा में गोल्फ के लिए युक्तियों पर एक नज़र डाली है ? संपादित करें: इसके अलावा, आपको इनपुट हार्ड-कोडित लगता है। आपको उपयोगकर्ता से इनपुट लेना चाहिए
Jo King

@JoKing आह ठीक है। मैं उपयोगकर्ता से इनपुट लूंगा।
जेडन ली

मैंने यह महसूस करने से पहले 650 बाइट्स में गोल्फ को कामयाब किया कि यह काम नहीं करता है।
क्विंटेक

@ क्विंट का मतलब है कि मेरा कोड काम नहीं करता है?
जेडन ली

0

साइडफ , 89 85 बाइट्स

ब्लॉक (अनाम कॉल करने योग्य):

{.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(' ')
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.