স্ট্রিংটিকে এন টুকরো (বা দৈর্ঘ্যের টুকরো টুকরা) এ বিভক্ত করুন


11

চ্যালেঞ্জ

এই চ্যালেঞ্জে আপনাকে ইনপুটটির ক্রমের উপর নির্ভর করে দুটি পৃথক (তবে সম্পর্কিত) করতে হবে।
আপনার প্রোগ্রামটি স্ট্রিং sএবং একটি পূর্ণসংখ্যা nইনপুট হিসাবে এবং গ্রহণ করবে

  • sদৈর্ঘ্যের টুকরো বিভক্ত nযদি sপ্রথম আসে। প্রয়োজনে শেষ উপাদানটি খাটো হবে।
  • বিভক্ত sমধ্যে nসমান দৈর্ঘ্য টুকরা যদি nপ্রথম আসে। তাহলে len(s)এর গুণিতক নয় nপ্রথম len(s) mod nউপাদান এক দীর্ঘতর হতে হবে।

আপনি কেবল সেই 2 ইনপুট নিতে পারেন। sকেবলমাত্র অঙ্ক থাকবে না।

মন্তব্য

  • আপনি বিপরীত ম্যাপিং ব্যবহার করতে পারেন। আপনি যদি তা করেন তবে আপনার উত্তরে এটি নোট করুন।
  • sকেবল মুদ্রণযোগ্য এএসসিআইআই অক্ষর থাকবে (কোনও নতুন লাইন নেই)।
  • আপনি এমন কোনও বিল্টিন ব্যবহার করতে পারবেন না যা সরাসরি সেই দুটি কার্য সমাধান করে। অন্য সমস্ত বিল্টিন অনুমোদিত।
  • আপনাকে একই উত্স থেকে উভয় যুক্তি নিতে হবে।
  • আপনি কোনও অর্ডারযুক্ত তালিকায় বা অন্য কোনও ফর্ম্যাটে আর্গুমেন্টগুলি নিতে পারেন যা স্পষ্টতই তাদের অর্ডারটি নির্দেশ করে যতক্ষণ না এটি দ্ব্যর্থহীন।
  • আপনি ইনপুটটিকে একটি স্ট্রিং / স্ট্রিম হিসাবে নিতে পারেন এবং কোনও অক্ষর ব্যবহার করতে পারেন যা বৈধ ইনপুট নয় (নালবাইটের মতো) এগুলি পৃথক করতে পারে।
  • nসর্বদা দৈর্ঘ্যের চেয়ে সমান বা কম sএবং শূন্যের চেয়ে বড় হবে।
  • আপনি কোনও ফলাফলকে অনুরূপ আকারে আউটপুট করতে পারবেন যতক্ষণ না এটি স্পষ্টভাবে নির্দিষ্ট টুকরা এবং তাদের ক্রমটি নির্দেশ করে।

উদাহরণ

ইনপুট: programming, 3
শেষ উপাদানটিতে মাত্র 2 টি অক্ষর রয়েছে কারণ 11 টি 3 দ্বারা বিভাজ্য নয়
আউটপুট: ["pro", "gra", "mmi", "ng"]

ইনপুট: 3, programming
11 টি 3 এর একাধিক নয়, সুতরাং প্রথম 2 টি উপাদান আরও দীর্ঘ হবে:
আউটপুট: ["prog", "ramm", "ing"]

বিধি

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

এই পাইথ প্রোগ্রামটি দিয়ে পরীক্ষাগুলি তৈরি হয়েছে (বিল্টইন ব্যবহার করে, তাই কোনও কার্যকর উত্তর নেই)। এর বেস ভার্সন সরবরাহ করার জন্য @ ফ্রিআমএইটিজিমনকে ধন্যবাদ!

3, হেলিওর্ল্ড -> ['নরক', 'ওও', 'আরএলডি']
হেলিওরল্ড, 3 -> ['হেল', 'নিম্ন', 'অর্ল', 'ডি']
1, প্রোগ্রামিং -> ['প্রোগ্রামিং']
প্রোগ্রামিং, 1 -> ['পি', 'আর', 'ও', 'জি', 'আর', 'এ', 'এম', 'এম', 'আই', 'এন', 'জি']
8, প্রোগ্রামিং -> ['জনসংযোগ', 'ওগ', 'রা', 'এম', 'এম', 'আই', 'এন', 'জি']
প্রোগ্রামিং, 8 -> ['প্রোগ্রামম', 'আইএনজি']
9, কোড গল্ফ -> ['সি', 'ও', 'ডি', 'ই', '', 'জি', 'ও', 'ল', 'চ']
কোড গল্ফ, 9 -> ['কোড গল্ফ']
4, 133 স্পেক -> ['133', 'টিএস', 'পে', 'একে']
133 স্পেক, 4 -> ['133 টি', 'স্পিয়া', 'কে']

শুভ কোডিং!


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

পছন্দ করেছেন আমি স্পষ্ট করেছিলাম।
ডেনকার

আমাদের ভাষা যদি অ্যারে সমর্থন করে না, তবে আমাদের কীভাবে আউটপুট করা উচিত? স্ট্রিংয়ের প্রতিটি ফলাফলের মধ্যে একটি নতুনলাইন গ্রহণযোগ্য হবে?
কনর ও'ব্রায়ান

এছাড়াও, যে ভাষাগুলিতে ইনপুটটি অস্পষ্ট সংখ্যাগুলির একটি অ্যারে, সেখানে পদ্ধতিটি কী হওয়া উচিত?
কনর ও'ব্রায়ান

@ CᴏɴᴏʀO'Bʀɪᴇɴ ঘটতে পারে না। এর মধ্যে কেবলমাত্র অঙ্ক থাকবে না । এছাড়াও আপনি ফলস্বরূপ যে কোনও রেজোনেবল ফর্ম্যাটে ফলাফল আউটপুট করতে পারবেন যতক্ষণ না এটি স্পষ্টভাবে নির্দিষ্ট টুকরাগুলি এবং তাদের ক্রমটি নির্দেশ করে যা অবশ্যই মাল্টলাইন আউটপুট অন্তর্ভুক্ত করে।
ডেনকার

উত্তর:


3

এমএটিএল, 46 26 21 27 29 42 বাইট

jtU?jtbUe!tn2Gn>?0t(]tgbw(}ie]!2t$X{Oc''Zt

অনলাইনে চেষ্টা করে দেখুন! (ভাষার সর্বশেষ সংস্করণটি নিয়ে কাজ করার জন্য সামান্য আপডেট করা হয়েছে)

ব্যাখ্যা

j           % Explicitly grab the first input as a string
t           % Duplicate
U           % Attempt to convert it to a number
?           % If the conversion to a number was successful
    j       % Explicitly grab the second input as a string
    t       % Duplicate the value
    b       % Bubble-up the first element in the stack
    U       % Convert to a number from a string
    e       % Reshape the string into a nGroup x nPerGroup matrix
    !       % Take the transpose
    t       % Duplicate the result
    n       % Number of characters in the repmat result
    2Gn     % Number of characters in the string
    >?      % If chars in repmat > chars in string
        O   % Zero
        t   % Duplicate 
        (   % Assign the last element to a null character (bug in MATL)
    ]       % End if statement
    t       % Duplicate this matrix
    g       % Convert to a logical matrix
    b       % Bubble-up the original string
    w       % Flip the top two elements
    (       % Assign the non-empty characters to the chars from the input string
}           % Else the string comes first
    i       % Explicitly grab the second input (the number)
    e       % Reshape the characters into an nPerGroup x nGroup 2D array
]           % End of if statement
!           % Take the transpose so it reads left-to-right
2           % Number literal
t           % Duplicate
$X{         % Call num2cell to convert to a cell array
Oc          % Null character
''          % Empty string
Zt          % Replace null chars with empty strings
            % Implicit display of stack contents

কিছু তালিকা উপাদানগুলির শেষে প্রদর্শিত সেই অপ্রিন্টেবলগুলি কী কী? এগুলি ইনপুটটির অংশ নয় এবং সুতরাং আউটপুটটির অংশও হওয়া উচিত নয়।
ডেনকার

নয় eএকটি builtin নিষিদ্ধ?
FliiFe

হয়তো প্রতিস্থাপন XUZN?...দ্বারা U?...এবং দুই অদলবদল ifশাখা। এছাড়াও, আপনার প্রয়োজন নেই3$
লুইস মেন্ডো

নিবন্ধন করুন এখনই ঠিক করা উচিত।
Suever

@ ফ্লাইফি প্রাথমিক পোস্টের মন্তব্যের ভিত্তিতে eসরাসরি সমস্যার সমাধান করে না, তাই আমি এটিকে নিষিদ্ধ হিসাবে বিবেচনা করি না, না।
Suever

4

জাভাস্ক্রিপ্ট (ES6), 132 বাইট

(s,t)=>+t?[...Array(-~(~-s.length/+t))].map((_,i)=>s.substr(i*t,t)):[...Array(s=+s)].map(_=>t.slice(p,p-=~((t.length-p-1)/s--)),p=0)

এটি সম্ভবত আশাহীনভাবে অতিরিক্ত ইঞ্জিনিয়ারড।


ঠিক আছে, আমার (এখন মৃত) সমাধানটি গুরুতরভাবে ইঞ্জিনিয়ারড হয়েছিল। আপনার জন্য +1
edc65

4

জাভাস্ক্রিপ্ট (ফায়ারফক্স), 88 87 বাইট

a=>b=>(s=+b?a:b,i=x=0,l=s.length,[for(c of s)if(r=s.slice(x,x+=+b||l/a+(i++<l%a)|0))r])

(...)("programming")(3)ফায়ারফক্স 30+ ব্যবহার করার মতো এটি কল করুন ।


2

রুবি, 119 বাইট

->x,y{r=[t=0];x.to_s==x ?(r.push x[t...t+=y]while x[t]):x.times{r.push y[t...t+=y.size/x+(r[y.size%x]? 0:1)]};r[1..-1]}

এবং আমি 2 বাইট দ্বারা প্রথম স্থান ...


রুবিতে রেজেক্স অবজেক্টগুলির মধ্যে স্ট্রিংগুলি একইভাবে মান সংযোজন করতে পারে, সুতরাং x.scan(/.{,#{y}})প্রথম ক্ষেত্রে স্ট্রিংগুলি বিভক্ত করার জন্য ঠিক একইভাবে কাজ করে। বা একটি বিল্টিন হিসাবে গণনা না?
মূল্য কালি

2

এডাব্লুকে, 121 130 128 122 বাইট

$1~/^[0-9]+$/{s=1}{a=$(s+1)
b=s?$1:$2
$0=""
for(j=-b;j<=c=length(a);)$0=$0 substr(a,j+=b+s,b+(s=s&&j<c%b*(b+1)?1:0))" "}1

প্রথম ইন্ট্রি যদি একটি সংখ্যাসূচক মান দিয়ে শুরু হয় এমন একটি স্ট্রিং হয় তবেই কেবল সমস্যা। এটি কারণ হবেAWK স্ট্রিংটিকে সেই সংখ্যা হিসাবে এবং দ্বিতীয় এন্ট্রিটিকে স্ট্রিং হিসাবে দেখতে পাবে।

ঠিক আছে ... সংখ্যার সমস্যাটি ঠিক করা হয়েছে তবে এটিতে 9 বাইট যুক্ত হয়েছে :(।

একটি দম্পতি বাইট সংরক্ষণ করতে কিছুটা কাজ করেছিল।

প্রায় মূল দৈর্ঘ্য ফিরে। :)


ঠিক আছে, @ ডেনারএফ, এটি সাধারণভাবে কাজ করার জন্য এটি স্থির করে এবং কেবল (শেষ পর্যন্ত) 1 বাইট যুক্ত করেছে।
রবার্ট বেনসন

1

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

import Data.Lists
q(d,m)=splitPlaces$(d+1<$[1..m])++[d,d..]
a#b|all(`elem`['0'..'9'])a=q(divMod(length b)$read a)b|1<2=q(read b,0)a

ব্যবহারের উদাহরণ:

*Main> "8" # "programming"
["pr","og","ra","m","m","i","n","g"]
*Main> "programming" # "8"
["programm","ing"]

এটি কীভাবে কাজ করে: মূল কাজটি হেল্পার ফাংশন দ্বারা সম্পন্ন হয় q যা একজোড়া সংখ্যা (d,m)এবং একটি স্ট্রিং নেয় s। এটি প্রথমে অসীম অনেকের (যেমন ->> ) পরে mসময়ের তালিকা তৈরি করে । এরপরে এটি তালিকা দ্বারা প্রদত্ত দৈর্ঘ্যের অংশগুলিতে বিভক্ত হয়। উপাদানগুলি শেষ হয়ে গেলে থামায় তাই অসীম তালিকাটি ঠিক আছে।d+1d(1,3)[2,2,2,1,1,1,1,1,...]splitPlacesssplitPlacess

মূল কাজ # চেক যা প্যারামিটার সংখ্যা n/ পংক্তি strএবং কলের qপারেন সঙ্গে (div (length str) n, mod (length str) n)বা (n, 0)প্লাস str


0

সি # (লাইনকিপ্যাড) - 335 বাইট

var y=Util.ReadLine().Split(',');int x,j=0;var t=int.TryParse(y[0].Trim(),out x);x=x==0?int.Parse(y[1].Trim()):x;var i=t?y[1].Trim():y[0];var z="";if(!t){while(i.Substring(j).Length>x){z+=i.Substring(j).Length>x?i.Substring(j,x)+", ":"";j+=x;}z+=i.Substring(j);}else z=string.Join(", ",i.Split(x).Select(s=>string.Concat(s)));z.Dump();

ইনপুট পাঠের অংশটি কিছুটা জায়গা নিয়েছে। দীর্ঘতম জয়ের বিজয়ী।

ব্যবহার # 1:

$ 3, helloworld

>> hell, owo, rld

ব্যবহার # 2:

$ helloworld, 3

>>hel, low, orl, d


0

পাইথ, 181 বাইট

আসুন বাইটস in o / এ দীর্ঘতম কোডটি ভান করুন

DyGK@G0J:@G1"."1=YJV%lJKW<l@YN.EclJK=YXYN+@YN@YhN=Y.DYhN)FNr%lJK/-lJ%lJK/-lJ%lJKKW<l@YNsclJK=YXYN+@YN@YhN=Y.DYhN))RY)DPG=K@G1=J:@G0"."1=YJV/lJKW<l@YNK=YXYN+@YN@YhN=Y.DYhN))RY).xyQPQ

এখানে চেষ্টা করুন!(অনলাইন দোভাষীর একটি বাগ রয়েছে বলে মনে হয়, এটি ইনপুটটি প্রদর্শন করে যা এটি করা উচিত নয়)

টার্মিনাল থেকে আউটপুট এখানে:

» pyth split.pyth <<<'["helloworld", 3]' 
['hel', 'low', 'orl', 'd']
» pyth split.pyth <<<'[3, "Helloworld"]'
['Hell', 'owo', 'rld']

গুরুতরভাবে, আমি নতুন পদ্ধতির জন্য উন্মুক্ত। আমি অজগর থেকে নতুন, তাই আমি সম্ভবত কিছু সংক্ষিপ্তপদ মিস করেছি।

মানে, আমি মনে করি আমার উত্তরটি জাভাস্ক্রিপ্টের উত্তরের চেয়ে দীর্ঘতর বিন্দু থেকে হ্রাস করা ...


আপনি কি একটি নমুনা ইনপুট এবং আউটপুট সরবরাহ করতে পারেন?
ফাঁস নুন

শিরোনামের নীচে সরকারী সমাধানটি নোট করুন testcases। টেস্টকেসগুলি পাইথ দ্বারা উত্পাদিত হয়। সমাধানটি হল .xcsJKcJsK, কোথায় Jএবং Kদুটি যুক্তি where
ফাঁস নুন

@ কেনিলাউ আমি অনলাইন পাইথ দোভাষীকে একটি লিঙ্ক যুক্ত করেছি। আশ্চর্যের বিষয়, এটি ইনপুটটিকেও আউটপুট দেয় যখন আমি নিশ্চিত যে এটি গতকালই হয়নি ... এটি ঠিক করার চেষ্টা করবে।
FliiFe

মুদ্রণ দমন করতে স্পেস ব্যবহার করুন
লিকি নুন

পছন্দ করেছেন
FliiFe

0

পিএইচপি, 114 বাইট

[$t,$n,$p]=$argv;for(@+$p?$s=$n:$f=$n*($p=strlen($s=$p)/$n)%$n;$t;)echo$t=substr($s,$a+=$e,$e=$p+($i++<$f)|0),"
";
  • স্ট্রিংগুলি অঙ্কগুলি দিয়ে শুরু করা উচিত নয়।
    (প্রতিস্থাপন +@$pসঙ্গে is_numeric($p)সমাধানের জন্য।)
  • আউটপুটে একটি অংশ "0" থাকা উচিত নয়।
    ( ~প্রিন্টযোগ্য এএসসিআইআই এর a&জন্য , আগে যে কোনও এএসসিআইআইয়ের জন্য .োকান$t; ঠিক করার যে ।)
  • এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন

0

পাওয়ারশেল , 122 118 বাইট

param($a,$b)if($a-is[int]){$a,$b=$b,((($l=$b|% Le*)-($c=$l%$a))/$a)}$a-split("(..{$b})"*$c+"(.{0,$b})"*$a.Length)-ne''

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

কম গল্ফড:

param($a,$b)
if($a-is[int]){
    $length=$b|% Length
    $c=$length%$a
    $a,$b=$b,(($length-$c)/$a)  # recalc length and swap
}
$pattern="(..{$b})"*$c+"(.{0,$b})"*$a.Length
$parts=$a -split $pattern       # pattern like '(..{3})(..{3})(.{0,3})(.{0,3})(.{0,3})'
$parts -ne ''                   # output not empty parts
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.