একটি শিফটার তৈরি করুন


10

কয়েকটি nস্থানে "শিফট" করতে, নিম্নলিখিতগুলি করুন:

  • শেষ nঅঙ্কগুলি সরান
  • nসংখ্যাটির শুরুতে প্রথম অঙ্কের অনুলিপি যুক্ত করুন

উদাহরণস্বরূপ, সংখ্যা নামান 31415তিন জায়গা, শেষ তিনটি সংখ্যা বের পেতে 31, এবং তারপর প্রথম সংখ্যা তিন আরো কপি যোগ করুন, 3, শেষ করা, দান 33331

যদি সংখ্যাটি নেতিবাচক হয় তবে অঙ্কগুলি পরিবর্তে বাম থেকে নেওয়া উচিত এবং প্রথম সংখ্যাটি ডানদিক থেকে "পূরণ করা" উচিত। উদাহরণস্বরূপ, স্ট্রিং 31415-3 স্থানের ওপরে স্থানান্তরিত হয়েছে 15555

সংখ্যাটি 0 হলে কোনও পরিবর্তন করা উচিত নয়।

যদি শিফটটি প্রোগ্রামের দৈর্ঘ্যের চেয়ে বেশি হয়, তবে ভরাট করা অঙ্কগুলি অপসারণ শুরু হতে পারে। এর অর্থ হল যে প্রদত্ত সংখ্যাটি যদি স্ট্রিংয়ের দৈর্ঘ্যের চেয়ে বেশি হয় তবে পুরো স্ট্রিংটি একক অঙ্কে পরিণত হওয়ার পরে আর কোনও পরিবর্তন করা হবে না।

চ্যালেঞ্জ

দুটি নম্বর দেওয়া, nএবং s, ফিরে nস্থানান্তর স্থানান্তরিত s

পরীক্ষার মামলা

   n,  s -> result
7243,  1 -> 7724
 452, -1 -> 522
  12,  1 -> 11
 153,  4 -> 111

এটি , তাই সংক্ষিপ্ততম বৈধ জমা (বাইটগুলিতে পরিমাপ করা) জয়ী।


বিজয়ী মানদণ্ড কী?
মিঃ এক্সকোডার

5
"শিফটিং" কী করে আমি তা বুঝতে পারি বলে আমি মনে করি না। এটি ট্যাগ করা [বাইনারি], যা আমাকে ভাবায় যে এটি বাইনারি শিফটগুলির সাথে কিছু করার আছে। হতে পারে এটি পরীক্ষার ক্ষেত্রে বাইনারি সংখ্যাগুলি প্রদর্শন করতে সহায়তা করবে?
ফল ফলবান

2
এটি স্থানান্তরিত এবং প্রথম বা শেষ অঙ্ক "প্রসারিত"। অস্পষ্ট কি?
লুইস মেন্ডো

2
হ্যাঁ তারা যা জিজ্ঞাসা করছে তা এটি সম্পূর্ণ পরিষ্কার
রাইমাগ করুন

3
স্থানান্তর ভাল সংজ্ঞায়িত: বেস একটি শক্তি দ্বারা পূর্ণসংখ্যা গুণ বা বিভাগ। তবে পরীক্ষার কোনও ক্ষেত্রেই কাজ হয় না, সুতরাং এই প্রশ্নটি আইডিসিঙ্ক্র্যাটিক সংজ্ঞা ব্যবহার করে এবং এটি কী তা বলে না।
পিটার টেলর

উত্তর:


2

এপিএল (ডায়ালগ) , 32 বাইট

বেনামে ফাংশন যা বাম আর্গুমেন্ট এবং সংখ্যাটিকে (স্ট্রিং হিসাবে) ডান আর্গুমেন্ট হিসাবে গ্রহণ করে।

{a←|⍺⋄(≢⍵)↑(a-⍺)↓(a⍴⊃⍵),⍵,a⍴⊃⌽⍵}

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

{ বেনামে ফাংশন যেখানে এবং left বাম এবং ডান আর্গুমেন্ট

|⍺ শিফটের পরম মান

a← সঞ্চয় একটি

 তারপর

⌽⍵ নম্বর বিপরীত

 প্রথম (অর্থাত্ শেষ) অঙ্কটি বেছে নিন

a⍴ দৈর্ঘ্য তা eshape একটি

⍵, নম্বরটি প্রিপেন্ড করুন

(), নিম্নলিখিতটি পুনরায় সংশোধন করুন:

  ⊃⍵ প্রথম সংখ্যা

  a⍴ দৈর্ঘ্য তা eshape একটি

()↓ নিম্নলিখিত অক্ষরের সংখ্যা ফেলে দিন:

  a-⍺একটি বিয়োগ শিফট

()↑ নিম্নলিখিত অক্ষর নিন:

  ≢⍵ মূল সংখ্যার দৈর্ঘ্য



2

হাস্কেল, 69 বাইট

s#n|l<-[1..abs n]=take(length s)$drop(-2*n)$(s!!0<$l)++s++(last s<$l)

স্ট্রিং হিসাবে নম্বর নেয়। এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে:

s#n                         -- s: input number as a string
                            -- n: shift amount

(s!!0<$l)++s++(last s<$l)   -- make a string:
                            -- n times the first digit, the whole number, n times the last digit
                            -- e.g. "567" 2 -> 5556777
drop(-2*n)                  -- drop the first (-2 * n) chars, i.e. 0 if n>0
take(length s)              -- take as may chars as there are in s

2

এমএটিএল , 12 বাইট

tn:i-yn1&Xl)

ইনপুটগুলি হ'ল: স্ট্রিং হিসাবে স্থানান্তরিত করার সংখ্যা; একটি সংখ্যা হিসাবে স্থানান্তর পরিমাণ।

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

উপকরণ ইনপুট '452এবং '-1'

t     % Implicitly input string. Duplicate
      % STACK: '452', '452'
n     % Number of elements
      % STACK: '452', 3
:     % Range
      % STACK: '452', [1 2 3]
i     % Input number
      % STACK: '452', [1 2 3], -1
-     % Subtract, element-wise
      % STACK: '452', [2 3 4]
y     % Duplicate from below
      % STACK: '452', [2 3 4], '452'
n     % Number of elements
      % STACK: '452', [2 3 4], 3
1     % Push 1
      % STACK: '452', [2 3 4], 3, 1
&Xl   % Clamp, with three inputs. Applies min function, then max
      % STACK: '452', [2 3 3]
)     % Reference indexing. Implicitly display
      % STACK: '522'

1
এটি এখন পর্যন্ত ভাল চাকরির সর্বনিম্ন পরিমাণ!
কে স্প্লিট এক্স

@ কেএসপ্লিটএক্স ধন্যবাদ! বিটিডাব্লু আমি কেবল একটি ব্যাখ্যা যুক্ত করেছি
লুইস মেন্ডো

1

জে, 37 বাইট

এটি জে-র এমন একটি পরিস্থিতির মধ্যে যেখানে একটি স্পষ্ট ক্রিয়াটি সঠিক (একমাত্র?) পছন্দ মতো বলে মনে হয়েছিল তবে আমি এটির একটি সুস্পষ্ট পুনর্লিখন আছে কিনা তা জানতে আগ্রহী:

4 :'(-x)(|.!.((x>0)&{({:,{.)":y))":y'

জে এর শিফ্ট ক্রিয়াটি বিল্ট ইন আপনাকে "ভরাট" অক্ষরটি কনফিগার করতে দেয়:

|.!.f  NB. f is the fill character

প্রথম বা শেষ চরটি পূরণের চরিত্রটি সোজা হিসাবে ব্যবহার করা হবে তা নির্ধারণের জন্য যুক্তি

(x>0)&{ ({: , {.)

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


1

জে , 23 বাইট

(_&(]{.,],{:)~|)}.~_2*]

ইনপুট n এবং আউটপুট হ'ল সংখ্যাযুক্ত স্ট্রিং।

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

ব্যাখ্যা

(_&(]{.,],{:)~|)}.~_2*]  Input: 'integer n' as a string (LHS), integer s (RHS)
(              )         Extend 'n' by copying its head and tail 's' times
              |            Abs(s)
 _&(]       )~             Nest 'Abs(s)' times on 'n'
          {:                 Tail
        ],                   Append the tail to itself
     {.                      Head
       ,                     Prepend the head to the previous
                   _2*]  Multiply 's' by -2
                }.~      Drop abs(-2*s) from the head if 's' < 0 else from the tail

সুন্দর। আমার সন্দেহ ছিল আমার চেয়ে আরও ভাল পন্থা ছিল ...
জোনা

যদিও আমি লক্ষ্য করেছি আপনি একটি স্ট্রিং হিসাবে এন নেবেন যা সম্ভবত (সম্ভবত ভুলভাবে) আইডি অনুমান করা হয়নি। যদিও এটি আমাকে কেবলমাত্র চারটি অক্ষর রক্ষা করতে পারত ...
যোনা



0

পাইথন 2 , 87 বাইট

f=lambda n,s:s<0and f(n[::-1],-s)[::-1]or n[0]*min(len(n),s)+n[:[0,len(n)-s][len(n)>s]]

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

স্ট্রিং হিসাবে নম্বর এবং পূর্ণসংখ্যা হিসাবে স্থানান্তর করে। একটি স্ট্রিং প্রদান করে।

আমি পুনরাবৃত্তি কল করার চেয়ে ফাংশনের অভ্যন্তরে বিপরীতটি এম্বেড করার চেষ্টা করেছি, তবে আমি এটি সঠিকভাবে পাইনি বলে মনে হয়।



0

হাস্কেল , 108 বাইট

ওহ ভাল, এটি আমার ভেবে আরও খারাপ হয়েছে ..

n#s=print$show n&s
r=reverse
n&s|s<0=r$r n&abs s|(a:b,c)<-splitAt s n=take(length n)$(a<$[0..s])++b++c|1>0=n

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

Ungolfed

n # s = print $ show n & s
n & s
  | s < 0                = reverse (reverse n & abs s)
  | (a:b,c)<-splitAt s n = take (length n) (replicate s a ++ b ++ c)
  | otherwise            = n

0

ক্লোজার, 121 বাইট

#(let[T(if(pos? %2)reverse vec)](apply str(concat(repeat %2(first %))(T(drop(Math/abs %2)(T %)))(repeat(- %2)(last %)))))

খুব, নেতিবাচক ইনপুটগুলি মোকাবেলা করতে বাজে।


0

পাইথ, 28 বাইট

AQ=Y<+*hJ?K<0H`G_`GHJlJ?KY_Y

এটি অনলাইনে চেষ্টা করুন বা কিছু ইনপুট পরীক্ষা করুন

ব্যাখ্যা

AQ=Y<+*hJ?K<0H`G_`GHJlJ?KY_Y
AQ                           | Split Q into 2 parts, G and H.
        J?K<0H`G_`G          | If 0 < H, J = str(G). Else, J = reverse(str(G)). Return J
       h                     | Find 1st element
      *            H         | Repeat H times
     +              J        | Concatenate with J
    <                lJ      | Find 1st length(J) elements
  =Y                         | Assign to Y.
                       ?KY_Y | If K, implicit print Y. Else implicit print reverse(Y).


0

জাভাস্ক্রিপ্ট, 80 বাইট

(n,s,k=n.length,p=s<=0)=>n.slice(p*-s,p?k:-s)[p?"padEnd":"padStart"](k--,n[p*k])

সংখ্যার একটি স্ট্রিং প্রতিনিধিত্ব এবং একটি সংখ্যক "শিফট" পরিমাণ হিসাবে ইনপুট নেয়। একটি স্ট্রিং প্রদান করে।

পরীক্ষার স্নিপেট

let f=
(n,s,k=n.length,p=s<=0)=>n.slice(p*-s,p?k:-s)[p?"padEnd":"padStart"](k--,n[p*k])

I.value="31415";J.value="3";D.oninput()
<div id=D oninput="O.value=I.value.length&J.value.length?f(I.value,+J.value):''">n: <input id=I size=10> s: <input id=J size=2><br><input id=O disabled>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.