কেমব্রিজ স্থানান্তর


21

আমি নিশ্চিত যে, বেশিরভাগ না হলেও, আপনারা কিছু না কোনও সময় বা অন্য কোনও সময়ে এসে পৌঁছেছেন :

অ্যাকড্রিনিগ ক্যামব্রিগদে ইউনর্টিসি-তে একটি অনুসন্ধানের উদ্দেশ্যে, এটি একটি কব্জায় লিটারগুলি হ'ল, অলি-ইপ্রোমেন্ট তিহং হ'ল হিমশীতল এবং লসেট লিটিয়ারটি রিগিত প্লেতে থাকবে। আরসেটটি একটি টটল ম্যাসস হতে পারে এবং আপনি এটি বানাতে পারেন পোড়ামাটির দিকে। তিহস হুমন এমনিড ডিওসকে ইল্টেফের সাহায্যে রেড এર્ভে লেটারে রেড করা হয়নি, তবে কুঁচকির মতো কুঁচকে গেছে।

  • এমন একটি প্রোগ্রাম তৈরি করুন যা কোনও পরিমাণ পাঠ্যকে অন্তর্ভুক্ত করে। পরীক্ষার উদ্দেশ্যে, নীচে পাওয়া উপরের পাঠ্যের আনস্র্যাম্বলড সংস্করণটি ব্যবহার করুন।

  • প্রোগ্রামটি অবশ্যই প্রতিটি শব্দের প্রথম এবং শেষ অক্ষর ব্যতীত প্রতিটি শব্দের অক্ষর 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*''}

-২ চরের জন্য প্রিয় @ ধন্যবাদ

পরীক্ষা

➜  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শূন্য প্রস্থের চেহারা-পিছনের দৃ as়তার জন্য সমর্থন করে না ? এছাড়াও, অভ্যন্তরীণতম গ্রুপিংটি অপ্রয়োজনীয়, $&পরিবর্তে ব্যবহার করা $1
প্রিমো

@ প্রিমো, আমি মনে করি না, এটি কাজ করে না, এবং কোনও রেফারেন্স পৃষ্ঠাতেও এটি পাইনি। $&টিপ দেওয়ার জন্য ধন্যবাদ :)
ডগবার্ট

তুমি ঠিক বলছো. আমার ধারণা আমি পিএইচপি-র মতোই তারা সরাসরি পার্ল রেজেক্স নিয়েছিল বলে ধরে নিয়েছি;)
প্রিমো

3
এই codegolfস্ক্রিপ্ট সম্পর্কে আমাকে আরও বলুন
স্পার

1
বহু বছর পরে, কিন্তু: এলোমেলো করার আগে একটি নতুন অ্যারে তৈরি করার দরকার নেই: [*$&.chars]=> $&.chars3 বাইট সংরক্ষণ করা।
ডানিরো

5

পাইথন, 118

পাইথন এ জাতীয় জিনিসের জন্য মারাত্মক বিশ্রী!

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

পিএইচপি 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

জে (48)

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

ব্যাখ্যা:

  • 1!:1[3: স্টিন থেকে সমস্ত ইনপুট পড়ুন
  • rxapply: রেজেক্সের সাথে মেলে এমন ইনপুটটির অংশগুলিতে প্রদত্ত ফাংশনটি প্রয়োগ করুন
  • ({~?~@#): একটি ক্রিয়া ট্রেন যা এর ইনপুটটি পরিবর্তন করে: #দৈর্ঘ্য গণনা করে, এটি ?0 থেকে N এর জন্য পৃথক সংখ্যা N দেওয়ার উভয় পক্ষের জন্য প্রয়োগ করা হয় ,{ তারপরে ইনপুট অ্যারে থেকে সূচকগুলিতে উপাদানগুলি নির্বাচন করে।
  • ('\w(\w+)\w';,1): সেই রেজেক্স ব্যবহার করুন তবে কেবল প্রথম গ্রুপের মানটি ব্যবহার করুন
  • [1!:2&4: স্ট্যাডআউটে ফরম্যাট করা আউটপুট প্রেরণ করুন
  • ''[: বিন্যাসিত আউটপুট দমন। এটি প্রয়োজনীয় কারণ অন্যথায় এটি কেবলমাত্র আউটপুটটির সেই অংশটিকে আউটপুট দেয় যা টার্মিনাল লাইনে ফিট করে এবং তারপরে শেষ হয় ...

3

রেটিনা , 10 বাইট

?V`\B\w+\B

এটি অনলাইন চেষ্টা করুন!

আরে, এই পুরানো চ্যালেঞ্জটি নতুন রেটিনার জন্য করা হয়েছিল!

ব্যাখ্যা

\B\w+\Bসীমারেখার মধ্যে অক্ষরের গ্রুপগুলির সাথে মিল রয়েছে, এটি হ'ল অক্ষরের গ্রুপ যা কোনও শব্দের শুরু বা শেষ হয় না। যেহেতু রেজেক্সগুলি লোভী, এটি প্রথম এবং শেষটি ব্যতীত কোনও শব্দের সমস্ত অক্ষরের সাথে মিলবে।

V"বিপরীত" পর্যায়টি, যা রেজেক্সের প্রতিটি ম্যাচে অক্ষরের ক্রমকে বিপরীত করে। সঙ্গে ?বিকল্প তাদেরকে পরিবর্তে scrambles।


আমি আরও 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

এপিএল, 58 49

আমি বিশ্বাস করি এটি আইবিএম এপিএল 2 এ কাজ করে (আমার কাছে আইবিএম এপিএল নেই)

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

যদি তা না হয় তবে ডায়ালগ এপিএলে সামনের অংশটি যুক্ত করুন:

 ⎕ML←3⋄

যা cha টি চর যোগ করে


এটি ধরে নিচ্ছে কেবল শব্দহীন অক্ষরগুলি হ'ল স্থান, কমা এবং সময়কাল।


এখনও গল্ফযোগ্য, তবে আইফোনে আমার কাছে এপিএল প্রতীক নেই ...
টোনিটাইট

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

এপিএল 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 () এর স্ট্রিং হিসাবে ইনপুট রয়েছে; স্ট্রিং হিসাবে আউটপুট আছে। আমি ইনপুট কমান্ডটি যুক্ত করেছি কারণ উদ্ধৃত স্ট্রিংয়ে কীভাবে sert 'সন্নিবেশ করা হয় তা আমি জানি না। মন্তব্য

∇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

পিএইচপি 7.1, প্রতিযোগিতা নয়, 80 বাইট

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

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়। সাথে চালাও -nr। (বিরামচিহ্নে স্পষ্টতই ব্যর্থ হবে)


1

পিএইচপি, 94 + 1 বাইট

-Rপতাকা জন্য +1

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

পাইপ ইনপুট মাধ্যমে php -nR '<code>'

দ্রষ্টব্য: preg_replace_callback৪.০.৫ এ পিএইচপি এ এসেছিল; ক্লোজারগুলি পিএইচপি 5.3 এ চালু হয়েছিল;
সুতরাং এটির জন্য পিএইচপি 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। (তবে অনুগ্রহের জন্য নোট করুন যে কোডের দৈর্ঘ্যটি গুরুত্বপূর্ণ নয় ))
অরনল্ড

1
@ আরনাউল্ড অনেক ধন্যবাদ এটি এখনও কোডগল্ফ হিসাবে, প্রতিটি বাইট গণনা করা হয়।
ovs

@ আরনাউল্ড সিরিয়াস প্রতিযোগী বিধি এখনও প্রযোজ্য।
ব্যবহারকারী 202729

1
@ ট্রেজেদার আমি একটি ব্যাখ্যা যুক্ত করেছি যা আপনাকে আপনার প্রয়োজনের জন্য কোডটি সংশোধন করতে সহায়তা করবে। বর্তমান ফর্মটিতে বেশিরভাগ ব্রাউজারগুলিতে কোডটি ভালভাবে চালানো উচিত। আপনি যদি আসল কোডটিতে এটি ব্যবহার করতে চান, আপনার সম্ভবত এটি অক্ষরকে অভিন্ন অ্যালগরিদমের পরিবর্তিত করার উপায়টি পরিবর্তন করা উচিত।
ovs

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

এটি অনলাইন চেষ্টা করুন!


আমি কি সরাসরি ব্রাউজারে জাপট চালাতে পারি? কোন বাহ্যিক গ্রন্থাগার, সংকলক ইত্যাদি ছাড়া? যদি তা না হয় তবে দুর্ভাগ্যক্রমে অনুগ্রহের বিধি অনুসারে এটি গণনা করা হয় না (এমন সমাধান প্রয়োজন যা খাঁটি ওয়েব ব্রাউজারে কাজ করে)। দ্বিতীয় কথা, যেহেতু আমি মনে করি কেমব্রিজ ট্রান্সপজিশনের মূল নিয়মগুলি এখানে দেখানো (ওপির প্রশ্নে) থেকে কিছুটা আলাদা ছিল। আপনার কোডটি 5+ অক্ষর লম্বা (4+ অক্ষরের পরিবর্তে ওপির প্রশ্নের মতো) শব্দগুলিকে স্ক্র্যাম্ব করতে সংশোধন করা সম্ভব?
ট্র্যাজার

1
@ ট্রেজেদার সমস্ত জমা দিতে হবে মূল প্রশ্নের বিধি অনুসারে। এটির মতো পরিবর্তন করা এটি অবৈধ করে তুলবে।
ব্যবহারকারী 202729

1
@ ট্রেজেদার জাপট কোনও সংকলক ছাড়া সরাসরি ব্রাউজারে চলতে পারে না। দ্বিতীয়ত আপনি যদি কোডটির 4 টি 5 এর সাথে প্রতিস্থাপন করেন তবে এটি কেবল 5+ অক্ষরের দীর্ঘ শব্দগুলিকে স্ক্র্যাম্ব করতে হবে।
বেজেফো

0

জাভা, 1557 834 বাইটস টিপস জন্য জোকিং ধন্যবাদ।

প্রতিযোগিতায় কিছুটা দেরি। ভুলে গেছি যে আমি এই সমস্যাটি শুরু করেছি।

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

দেখে মনে হচ্ছে অনেকগুলি সাদা জায়গা আপনি সরাতে পারবেন। আপনার জাভাতে গল্ফ করার টিপস একবার দেখেছেন ? সম্পাদনা: এছাড়াও, আপনার কাছে হার্ড-কোডেড ইনপুট রয়েছে বলে মনে হচ্ছে। পরিবর্তে আপনার ব্যবহারকারীর কাছ থেকে ইনপুট নেওয়া উচিত
জো কিং

@ জোকিং আহ ঠিক আছে আমি ব্যবহারকারীর কাছ থেকে ইনপুট নেব।
জাদেন লি

এটি কাজ করে না বুঝতে পেরে আমি এটিকে 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(' ')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.