একটি স্ট্রিং ভাগ করুন


23

চ্যালেঞ্জ

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

যদি স্ট্রিংয়ের দৈর্ঘ্য প্রদত্ত সংখ্যায় সমানভাবে বিভক্ত না হয়, আপনার প্রতিটি টুকরোটির আকারটি গোল করে একটি "অবশিষ্ট" স্ট্রিংটি ফিরিয়ে দেওয়া উচিত। উদাহরণস্বরূপ, যদি ইনপুট স্ট্রিংটির দৈর্ঘ্য 13 হয় এবং সংখ্যাটি 4 হয় তবে আপনাকে আকার 3 এর প্রতিটি স্ট্রিং এবং তারপরে আকার 1 এর একটি অবশিষ্ট স্ট্রিংটি ফিরিয়ে আনা উচিত।

যদি কোনও অবশিষ্ট না থাকে, আপনি কেবল একটি ফেরত দিতে পারবেন না, বা খালি স্ট্রিংটি ফিরিয়ে দিতে পারবেন না।

প্রদত্ত সংখ্যাটি স্ট্রিংয়ের দৈর্ঘ্যের চেয়ে কম বা সমান হওয়ার গ্যারান্টিযুক্ত। উদাহরণস্বরূপ, ইনপুটটি "PPCG", 7ঘটবে না কারণ "PPCG"7 টি স্ট্রিংয়ে বিভক্ত করা যায় না। (আমি মনে করি সঠিক ফলাফল হবে (["", "", "", "", "", "", ""], "PPCG")simply এটিকে ইনপুট হিসাবে সহজেই অস্বীকার করা সহজ))

যথারীতি I / O নমনীয়। আপনি স্ট্রিং এবং বাকী স্ট্রিংগুলির একটি জোড়া বা শেষে বাকীগুলির সাথে স্ট্রিংগুলির একটি তালিকা ফিরে আসতে পারেন।

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

"Hello, world!", 4 -> (["Hel", "lo,", " wo", "rld"], "!") ("!" is the remainder)
"Hello, world!", 5 -> (["He", "ll", "o,", " w", "or"], "ld!")
"ABCDEFGH", 2 -> (["ABCD", "EFGH"], "") (no remainder; optional "")
"123456789", 5 -> (["1", "2", "3", "4", "5"], "6789")
"ALABAMA", 3 -> (["AL", "AB", "AM"], "A")
"1234567", 4 -> (["1", "2", "3", "4"], "567")

স্কোরিং

এটি , তাই প্রতিটি ভাষার সংক্ষিপ্ত উত্তর জিততে পারে।

আপনার সমাধানটি আসলে আপনার ভাষার বিভাগ অপারেটর ব্যবহার করার জন্য বোনাস পয়েন্টগুলি (আসলে 😛 নয়)।


1
বোনাস পয়েন্ট? ওহ মানুষ আমি এটি করব
ম্যাথু রোহ


সম্পর্কিত , তবে দুটি অংশই এই চ্যালেঞ্জের মতো এক নয়।
musicman523

এটি পরিষ্কার করার জন্য দয়া করে একটি PPCG7PPCG
টেস্টকেস

@ JörgHülsermann এই ইনপুটটি অনুমোদিত নয়। আমি আরও স্পষ্ট হওয়ার জন্য এই ধরণের ইনপুট এবং পুনরায় ফর্ম্যাট করা সম্পর্কিত সম্পর্কিত আরও বিশদ যুক্ত করেছি।
musicman523

উত্তর:




5

পিপ , 21 বাইট

20 বাইট কোডের, -nপতাকা জন্য +1 ।

a~C(#a//b*XX)XbP$$$'

কমান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট গ্রহণ করে; আউটপুট স্ট্রিং এবং বাকী নতুনলাইন-পৃথক। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

রিজেক্স অপারেশন সহ মজা!

আসুন abcdefgআমাদের স্ট্রিং এবং 3আমাদের সংখ্যা হিসাবে গ্রহণ করুন। আমরা রেজেক্সটি তৈরি করি (.{2})(.{2})(.{2}), যা দুটি অক্ষরের তিনটি রানের সাথে মেলে এবং তাদের তিনটি ক্যাপচার গ্রুপে সঞ্চয় করে। তারপরে, পিপের রেজেক্স ম্যাচ ভেরিয়েবলগুলি ব্যবহার করে, আমরা 1) ক্যাপচার গ্রুপগুলির তালিকা ["ab";"cd";"ef"]এবং 2) মিলে না থাকা স্ট্রিংয়ের বাকী অংশ মুদ্রণ করতে পারি "g"

                      a,b are cmdline args; XX is the regex `.` (match any one character)
    #a//b             Len(a) int-divided by b: the length of each chunk
         *XX          Apply regex repetition by that number to `.`, resulting in something
                        that looks like `.{n}`
  C(        )         Wrap that regex in a capturing group
             Xb       Repeat the whole thing b times
a~                    Match the regex against a
               P$$    Print $$, the list of all capture groups (newline separated via -n)
                  $'  Print $', the portion of the string after the match

5

Haskell, , 62 বাইট

#একটি অপারেটর একটি Stringএবং একটি গ্রহণIntString এর তালিকা ফিরিয়ে দেবে ।

হিসাবে ব্যবহার করুন "Hello, world!"#4

s#n|d<-length s`div`n=[take(d+n*0^(n-i))$drop(i*d)s|i<-[0..n]]

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

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

  • s ইনপুট স্ট্রিং এবং n অ-অবশিষ্ট টুকরাগুলির সংখ্যা।
  • d প্রতিটি "স্বাভাবিক" অংশের দৈর্ঘ্য। divপূর্ণসংখ্যা বিভাগ
  • তালিকা বোধগম্য গঠন n+1 অংশ টুকরো টুকরো করে, সর্বশেষে অবশিষ্টটি।
    • iথেকে iterates 0করতেn সমেত।
    • প্রতিটি খণ্ডের জন্য প্রথমে i*dপ্রাথমিক অক্ষরের সঠিক পরিমাণ ( ) প্রথম dropথেকেই শুরু হয় s, তারপরে একটি প্রাথমিক স্তরটিকে takeফলাফল থেকে এন হয়।
    • গৃহীত স্ট্রিংয়ের দৈর্ঘ্যটি dবাকী অংশটি বাদে হওয়া উচিত ।
      • প্রকৃত অবশিষ্টটি অবশ্যই এর চেয়ে কম হতে হবে n, অন্যথায় স্বাভাবিক টুকরাগুলি এর পরিবর্তে দীর্ঘ করা হবে।
      • takeপ্রদত্ত দৈর্ঘ্যটি খুব বেশি হলে পুরো স্ট্রিংটি প্রদান করে, তাই আমরা >=n-1বাকী অংশের জন্য যে কোনও সংখ্যা ব্যবহার করতে পারি ।
      • অভিব্যক্তি d+n*0^(n-i)দেয় dযদি i<nএবং d+nযদি i==n। এটা তোলে ব্যবহার করে 0^xহয় 1যখন x==0, কিন্তু 0যদি x>0

আমি তালিকা বোধগম্যতা কোথায় ব্যবহার করতে পারি তার জন্য আমার নজর রাখা দরকার।
qfwfq

4

পাইথন 2 , 68 67 65 বাইট

  • @ musicman123 2 বাইট সংরক্ষণ করেছে: আটকানো ছাড়াই আউটপুট []
  • @ চাস ব্রাউনকে 1 বাইটের জন্য ধন্যবাদ: x[p*i:p+p*i]যেমনx[p*i][:p]
def f(x,n):p=len(x)/n;print[x[p*i:][:p]for i in range(n)],x[p*n:]

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


1
প্রতিস্থাপন সংরক্ষণ 1 বাইট x[p*i:p+p*i]সঙ্গেx[p*i:][:p]
Chas ব্রাউন

1
+1 এর জন্য :pPy অন্যান্য পাইথনের উত্তরগুলি আউটগল্ফ করে ভাল করেছেন!
musicman523

হাহাহা .. যে একেবারেই উদ্দেশ্য করা হয়নি ....: পি
অফিসিয়ালাইম

1
এই উত্তরটি এখন হয়েছে outgolfed
musicman523

4

সি ++ 14, 209 180 বাইট

এটি কিছুটা দীর্ঘ, তবে বিভাগ অপারেটরটি ব্যবহার করে:

#include<bits/stdc++.h>
using q=std::string;using z=std::vector<q>;z operator/(q s,int d){int p=s.length()/d,i=0;z a;for(;i<d+1;){a.push_back(s.substr(i++*p,i^d?p:-1));}return a;}

ব্যবহার:

vector<string> result = string("abc")/3;

অনলাইন সংস্করণ: http://ideone.com/hbBW9u


4

পাইথ, 9 বাইট

cz*L/lzQS

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

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

প্রথমে Qস্বায়ত্তশাসিত হয় eval(input())এবং এতে zস্বয়ম্ভর হয় input()

cz*L/lzQSQ
     lz      length of z
    /  Q     integer division by Q
  *L         times every element of
        SQ       [1, 2, …, Q]
cz           chop z at those locations


3

মরিচা , 107 বাইট

fn f(s:&str,n:usize)->(Vec<&str>,&str){let c=s.len()/n;((0..n).map(|i|&s[i*c..i*c+c]).collect(),&s[c*n..])}

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

বিন্যাসকৃত:

fn q129259(s: &str, n: usize) -> (Vec<&str>, &str) {
    let c = s.len() / n;
    ((0..n).map(|i| &s[i * c..i * c + c]).collect(), &s[c * n..])
}

এটি কেবল mapউত্সের সঠিক টুকরাগুলিতে সূচকগুলি str( collectএকটিতে প্রবেশ করে Vec) এবং বাকী অংশগুলি টুকরো টুকরো করে।

দুর্ভাগ্যক্রমে, আমি এটি বন্ধ করতে পারি না (by৪ বাইট):

|s,n|{let c=s.len()/n;((0..n).map(|i|&s[i*c..i*c+c]).collect(),&s[c*n..])}

সংকলক হিসাবে ব্যর্থ

error: the type of this value must be known in this context
 --> src\q129259.rs:5:18
  |
5 |          let c = s.len() / n;
  |                  ^^^^^^^

এবং যদি আমি প্রকারটি সরবরাহ করি s:&strতবে জীবনকাল ভুল হয়:

error[E0495]: cannot infer an appropriate lifetime for lifetime parameter in function call due to conflicting requirements
 --> src\q129259.rs:6:27
  |
6 |          ((0..n).map(|i| &s[i * c..i * c + c]).collect(), &s[c * n..])
  |                           ^^^^^^^^^^^^^^^^^^^
  |
note: first, the lifetime cannot outlive the anonymous lifetime #1 defined on the body at 4:18...
 --> src\q129259.rs:4:19
  |
4 |       (|s: &str, n| {
  |  ___________________^
5 | |          let c = s.len() / n;
6 | |          ((0..n).map(|i| &s[i * c..i * c + c]).collect(), &s[c * n..])
7 | |      })(s, n)
  | |______^
note: ...so that reference does not outlive borrowed content
 --> src\q129259.rs:6:27
  |
6 |          ((0..n).map(|i| &s[i * c..i * c + c]).collect(), &s[c * n..])
  |                           ^
note: but, the lifetime must be valid for the lifetime 'a as defined on the body at 3:58...
 --> src\q129259.rs:3:59
  |
3 |   fn q129259<'a>(s: &'a str, n: usize) -> (Vec<&str>, &str) {
  |  ___________________________________________________________^
4 | |     (|s: &str, n| {
5 | |          let c = s.len() / n;
6 | |          ((0..n).map(|i| &s[i * c..i * c + c]).collect(), &s[c * n..])
7 | |      })(s, n)
8 | | }
  | |_^
note: ...so that expression is assignable (expected (std::vec::Vec<&'a str>, &'a str), found (std::vec::Vec<&str>, &str))
 --> src\q129259.rs:4:5
  |
4 | /     (|s: &str, n| {
5 | |          let c = s.len() / n;
6 | |          ((0..n).map(|i| &s[i * c..i * c + c]).collect(), &s[c * n..])
7 | |      })(s, n)
  | |_____________^

3

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

(.+)¶(.+)
$2$*1¶$.1$*1¶$1
(1+)¶(\1)+
$1¶$#2$*1¶
\G1(?=1*¶(1+))
$1¶
¶¶1+

O^$`.

¶1+$

O^$`.

এটি অনলাইন চেষ্টা করুন! ব্যাখ্যা: প্রথম পর্যায়ে অংশের সংখ্যাকে অবিচ্ছিন্ন রূপান্তরিত করে এবং স্ট্রিংয়ের দৈর্ঘ্যও নেয়। দ্বিতীয় পর্যায়ে এরপরে অংশের সংখ্যা দ্বারা দৈর্ঘ্যকে ভাগ করে, কোনও অবশিষ্ট অংশ রেখে। তৃতীয় স্তরটি আবার অংশের সংখ্যা দ্বারা ফলাফলকে গুণ করে। এটি আমাদের সঠিক দৈর্ঘ্যের স্ট্রিংয়ের সঠিক সংখ্যা দেয়, তবে তাদের কাছে এখনও সামগ্রী নেই। অংশ সংখ্যা এখন চতুর্থ পর্যায়ে মুছে ফেলা যাবে। পঞ্চম পর্যায়ে সমস্ত চরিত্র বিপরীত। এটি স্থানধারক স্ট্রিংগুলির সাথে মূল সামগ্রীটি স্যুইচ করার প্রভাব ফেলেছে, তবে এটি এখন সঠিক জায়গায় থাকলেও এটি বিপরীত ক্রমে রয়েছে in স্থানধারীরা তাদের উদ্দেশ্যটি সম্পাদন করেছে এবং ষষ্ঠ ধাপে মুছে ফেলা হবে। অবশেষে সপ্তম পর্যায় অক্ষরগুলিকে তাদের মূল ক্রমে ফিরিয়ে দেয়।


3

পার্ল 6 , 36 বাইট

{$^a.comb.rotor($a.comb/$^b xx$b,*)}

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

স্ট্রিংগুলির তালিকার একটি তালিকা প্রদান করে, যেখানে শেষ উপাদানটি বাকি (যদি একটি থাকে)।

ব্যাখ্যা:

{                                  }  # Anonymous code block
 $^a.comb                             # Split the string into a list of chars
         .rotor(                  )   # And split into
                            xx$b      # N lists
                $a.comb/$^b           # With string length/n size
                                ,*    # And whatever is left over  

2

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

(s,d,n=s.length)=>[s.match(eval(`/.{${n/d|0}}/g`)).slice(0,d),s.slice(n-n%d)]

দুটি উপাদানের একটি অ্যারে প্রদান করে: বিভক্ত স্ট্রিং অংশ এবং অবশিষ্ট অংশ।

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

f=
(s,d,n=s.length)=>[s.match(eval(`/.{${n/d|0}}/g`)).slice(0,d),s.slice(n-n%d)]
<div oninput="O.innerHTML=I.value&&J.value?JSON.stringify(f(I.value,+J.value)):''">String: <input id=I> Number: <input id=J size=3></div>
<pre id=O>


2

জাপট , 18 বাইট

¯W=Ul fV)òW/V pUsW

এটি অনলাইন পরীক্ষা! ( -Qআউটপুট কল্পনা করতে পতাকা ব্যবহার করে )

ব্যাখ্যা

¯W=Ul fV)òW/V pUsW  : Implicit: U = input string, V = input integer
   Ul fV            : Floor U.length to a multiple of V.
 W=                 : Assign this value to variable W.
¯       )           : Take the first W characters of U (everything but the remainder).
         òW/V       : Partition this into runs of length W / V, giving V runs.
              pUsW  : Push the part of U past index W (the remainder) to the resulting array.
                    : Implicit: output result of last expression

2

পাইথন, 82 76 74 বাইট

def G(h,n):l=len(h);r=l/n;print[h[i:i+r]for i in range(0,n*r,r)],h[l-l%n:]

ঠিক আছে, দেখে মনে হচ্ছে এটি বোনাস পয়েন্টগুলির জন্য যোগ্যতা অর্জন করে। পরিবর্তে আমি কি একটি কুকি পেতে পারি? ওহ অপেক্ষা, তারা বাস্তব না? অভিশাপ ...

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



2

পাইথন, 95, 87, 76 73 বাইট

def f(s,n):
 a=[];i=len(s)/n
 while n:a+=s[:i],;s=s[i:];n-=1
 print a+[s]

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


পিপিসিজিতে আপনাকে স্বাগতম! আমি আপনার পোস্টে "এটি চেষ্টা করুন অনলাইনে" লিঙ্কটি যুক্ত করেছি। আমি মনে করি আপনি কোনও ফাংশন না করে একটি সম্পূর্ণ প্রোগ্রাম তৈরি করে আপনার সমাধানটি কিছুটা ছোট করতে পারেন। এটি অনলাইন চেষ্টা করুন!
musicman523

2

05 এ বি 1 ই , 12 বাইট

²g¹‰`s¹.D)R£

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

ব্যাখ্যা

²g¹‰`s¹.D)R£
²g           # Push length of string
  ¹          # Push amount of pieces
   ‰         # divmod of the two
    `s       # Flatten the resulting array and flip it around
      ¹.D    # Repeat the resulting length of the pieces amount of pieces times(wow that sounds weird)
         )   # Wrap stack to array
          R  # Reverse (so the remainder is at the end)
           £ # Split the input string into pieces defined by the array

1
ইনপুট-অর্ডারটি বিপরীত করে 9 বাইট
কেভিন ক্রুইজসেন

2

ব্র্যাচল্যাগ , 16 বাইট

kʰ↙Xḍ₎Ylᵛ&ht↙X;Y

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

তালিকা হিসাবে ইনপুট নেয় [string, number]এবং তালিকা হিসাবে আউটপুট দেয় [remainder, parts]। (স্পষ্টতার জন্য "হ্যালো, ওয়ার্ল্ড!" পরীক্ষার ক্ষেত্রে কমাগুলি সেমিকোলন দ্বারা প্রতিস্থাপিত হয়েছিল, যেহেতু স্ট্রিং খণ্ডগুলি উদ্ধৃতি দিয়ে মুদ্রিত হয় না))

                    The input
 ʰ                  with its first element
k ↙X                having the last X elements removed
    ḍ               and being cut into a number of pieces
     ₎              where that number is the last element of the input
      Y             is Y
       lᵛ           the elements of which all have the same length,
         &          and the input
          h         's first element
           t↙X      's last X elements
              ;     paired with
               Y    Y
                    are the output.

(আমি আরো একটি সামঞ্জস্যপূর্ণ আউটপুট বিন্যাসের একটি সেমিকোলন দিয়ে কোডে একটি কমা প্রতিস্থাপন করা হয়। কমা দিয়ে কোন বাকি সঙ্গে, মামলা would শুধু আউটপুট একটি খালি বাকি ছাড়া অংশ, এবং যে হিসাবে চমৎকার কিছু কাজের জন্য, আমি না আসলে কেন এটি সেভাবে কাজ করে ...)

এটি পুরো 16 বাইট হিসাবে প্রকাশিত হওয়ার পরে, আমি +₁ᵗ⟨ġl⟩কাজের উপর ভিত্তি করে কিছু তৈরি করার চেষ্টা করেছি , কিন্তু স্থিরকরণগুলি আরও দীর্ঘায়িত হওয়ার সাথে সাথে আমি স্থির করেছিলাম যে আমি আপাতত আমার মূল সমাধানটি ধরে রেখে যাব।



2

এক্সেল ফর্মুলা, 185 173 165 161 149 বাইট

নিম্নলিখিতটি অ্যারে সূত্র হিসাবে প্রবেশ করা উচিত ( Ctrl+ Shift+ Enter):

=MID(A1,(ROW(OFFSET(A1,,,B1+1))-1)*INT(LEN(A1)/B1)+1,INT(LEN(A1)/B1)*ROW(OFFSET(A1,,,B1+1))/IF(ROW(OFFSET(A1,,,B1+1))=B1+1,1,ROW(OFFSET(A1,,,B1+1))))

যেখানে A1আপনার ইনপুট (উদাহরণস্বরূপ 12345678) এবংB1 রয়েছে এতে বিভাজক রয়েছে। এটি বোনাসের জন্য এক্সেলের বিভাগ অপারেটরটিও ব্যবহার করে।

অ্যারে সূত্র হিসাবে সূত্র প্রবেশ করার পরে, সূত্র বারে এটি হাইলাইট করুন এবং F9ফলাফলটি ফেরত দেওয়ার জন্য এটি মূল্যায়ন করুন , উদাহরণস্বরূপ:

এক্সেল সূত্র মূল্যায়ন বিভক্ত গ্রুপ দেখাচ্ছে

-12 বাইট: প্রতিটি প্রতিস্থাপন INDIRECT("1:"&B1+1)সঙ্গেOFFSET(A1,,,B1+1) প্রতি 2 বাইট সংরক্ষণের , কিছু রিডানডেন্ট বন্ধনী অপসারণের কিছু সাশ্রয়ী।

-8 বাইট: অপ্রয়োজনীয় অপসারণINDEX ফাংশন ।

-4 বাইট: "বাকী" হ্যান্ডলিং পুনরায় কাজ।

-12 বাইট: -1 দ্বারা INT(LEN(A1)/B1)উত্পাদিত অ্যারে অফসেট করে রিডানডেন্ট সরান ROW(OFFSET(A1,,,B1+1))




1

গণিত, 58 বাইট

{#~Partition~a,#2}&@@TakeDrop[#,(a=Floor[Length@#/#2])#2]&

খাঁটি ফাংশন অক্ষরের তালিকা এবং ইনপুট হিসাবে ধনাত্মক পূর্ণসংখ্যার গ্রহণ করে। উদাহরণস্বরূপ, শেষ পরীক্ষার কেস দ্বারা ডাকা হয়

{#~Partition~a,#2}&@@TakeDrop[#,(a=Floor[Length@#/#2])#2]&[{"1","2","3","4","5","6","7"},4]

এবং ফেরত:

{{{"1"}, {"2"}, {"3"}, {"4"}}, {"5", "6", "7"}}

1

Haskell,, 120 88 বাইট (আরজান জোহানসেনকে ধন্যবাদ!)

না divবিভাজন অপারেটর হিসাবে গণনা?

আমি কৌতূহলী যে আমি কীভাবে এটি কেটে ফেলতে পারি, আমি এখনও সমস্ত কৌশল শিখিনি।

q=splitAt;x!s|n<-div(length s)x,let g""=[];g s|(f,r)<-q n s=f:g r,(a,b)<-q(n*x)s=(g a,b)

2
সবচেয়ে মৌলিক ঠাট সঙ্গে একটি দ্রুত লেখা: t=splitAt;x!s|n<-div(length s)x,let g""=[];g s|(f,r)<-t n s=f:g r,(a,b)<-t(n*x)s=(g a,b)। সুতরাং, (1) বারবার ব্যবহৃত শনাক্তকারী সংক্ষেপিত হতে পারে, বিশেষত এটি দীর্ঘ long (2) গার্ড এবং প্যাটার্ন গার্ডরা let... in, whereএবং এর চেয়ে কম প্রায় সবসময় কম থাকে if then else। (3) প্যাটার্ন মেলানো সমতা পরীক্ষার চেয়ে প্রায়শই ভাল। (ঠিক আছে, letএটি কোনও নিদর্শন রক্ষাকারী যে মৌলিক নয়, আমি সম্প্রতি এটি অন্য কারও কাছ থেকে শিখেছি)) এবং কোডগল্ফ.স্ট্যাকেক্সেঞ্জঞ্জ / প্রশ্নগুলি / ১৯২৫৫/২ দেখুন
janrjan জোহানসেন

1
এছাড়াও, কিছু দরকারী কৌশলগুলির জন্য হাসকেলে গল্ফ করার টিপস একবার দেখুন ।
সুদী

@ আরজান জোহানসেন ধন্যবাদ! আমি ভুলে গিয়েছিলাম যে সেমিকোলনগুলি বৈধ ছিল, এবং letগার্ডের মধ্যে এটি বেশ কৃপণ। তবে সংক্ষিপ্ত কোডটি আরও পাঠযোগ্য, তাই না?
qfwfq

1

ওহম, 3 বাইট (প্রতিযোগী নয়?)

lvσ

প্রতিযোগিতামূলক নয় কারণ বিল্ট-ইন টিআইওতে এখনও কার্যকর হয়নি এবং এটি রেপোতে সর্বশেষ টানে কাজ করে কিনা তা পরীক্ষা করার জন্য আমার কোনও পিসি হাতে নেই।

অন্তর্নির্মিত ¯ \\ _ (ツ) _ / ¯ ¯ আমি অন্তর্নির্মিতটি ভুল ব্যবহার করেছি ... তবে ওহে এখনও অন্য একজন রয়েছেন। এখন আমি দুবার ভুল অন্তর্নির্মিত ব্যবহার করেছি (বা একটি বিল্ট-ইন বাকী বাকীগুলির সাথে ভুল কাজ করে)।

v(তল) বিভাগ হওয়ার কারণে আমি কী বোনাস পয়েন্ট পেতে পারি ?


1
এটি প্রয়োজনীয় পথে বিভক্ত হয় না। যেমন Hello, world! 5টেস্টকেস ভুল। এটি অনলাইন চেষ্টা করুন!
janrjan জোহানসেন

ভাল আমি অন্য বিল্ট-ইন সন্ধান করতে যাচ্ছি ....
রোমান গ্রাফ

1

সিজেম , 16 বাইট

{_,2$//_2$<@@>s}

বেনামে ব্লক স্ট্যাকের উপর যুক্তি প্রত্যাশা করে এবং ফলাফলটি স্ট্যাকের পরে ছেড়ে দেয়।

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

ব্যাখ্যা

হিসাবে যুক্তি আশা করে number "string"

_,              e# Copy the string and get its length.
  2$            e# Copy the number.
    /           e# Integer divide the length by the number.
     /          e# Split the string into slices of that size.
      _         e# Copy the resulting array.
       2$       e# Copy the number.
         <      e# Slice the array, keeping only the first <number> elements.
          @@    e# Bring the number and original array to the top.
            >   e# Slice away the first <number> elements,
             s  e# and join the remaining elements into a string.

1

জে , 26 বাইট

(]$~[,(<.@%~#));]{.~0-(|#)

স্থান ফাঁকা এবং মধ্যবর্তী পদক্ষেপগুলি বাদ দিয়ে, এটি গল্ফ করা হয়নি। আমি প্রত্যাশা করি যে আমি কোনওভাবে দীর্ঘ পথ নিয়েছি, আমার প্রথম বন্ধনী এবং যুক্তি রেফারেন্সগুলির সাথে কী ( [এবং] ) দিয়ে।

পরীক্ষার ক্ষেত্রে যেমন বৃহস্পতি নোটবুকটি দেখুন যেমন:

   5 chunk test2
┌──┬───┐
│He│ld!│
│ll│   │
│o,│   │
│ w│   │
│or│   │
└──┴───┘

ধন্যবাদ। খুব দ্রুত পড়ুন। মন্তব্য সরানো হয়েছে
জোনা

1

আর , 79 63 বাইট

জিউস্পেপ থেকে ইনডেক্সিং ঠিক করা

function(s,n,k=nchar(s),l=k%/%n)substring(s,0:n*l+1,c(1:n*l,k))

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

ভেক্টর ইনপুট দেওয়ার জন্য নির্মিত substring()


63 বাইট - ইনডেক্সিংটি কিছুটা সরল করা হয়েছে।
জিউসেপ

@ জিউস্পে হা হা, আমি অবশ্যই সূচকটিতে যোগ ও গুণনের প্রতিটি রূপ চেষ্টা করে দেখেছি, তবে সেটিকে মিস করেছি। ভালো বল ধরা.
অপরাধমূলকভাবে

0

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

ধন্যবাদ @ জার্গহেলসারম্যান (বন্ধনী টিপ!)

$c=$s=explode('|',readline());
while($s[1]--)$s[0]=preg_replace('/^'.($l[]=substr($s[0],0,strlen($c[0])/$c[1])).'/','',$s[0]);
$l[r]=$s[0];
print_r($l);

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


1
আপনার পিএইচপি ওয়ে কাজ করে না কারণ এটি কেবল শুরুতে প্রতিস্থাপন করে। preg_replaceএকটি বিকল্প বা আপনি ব্যবহার করতে পারেন[,$s,$d]=$argv;print_r(array_slice(str_split($s,$l=strlen($s)/$d^0),0,$d)+[$d=>substr($s,$l*$d)]);
জার্গ হালসারম্যান

আপনি কি আমাকে একটি উদাহরণ কোড দিয়ে ব্যাখ্যা করতে পারেন কেন আমার পিএইচপি কোডটি কাজ করে না?
কিপ করুন


1
আপনি যদি বন্ধনী ব্যবহার করেন তবে অনলাইনে চেষ্টা করুন
জার্গ হালসারম্যান

সুন্দর টিপ! আমি সম্পূর্ণরূপে ভুলে গেছি
কিপ করুন

0

পাইথন 3 , 94 বাইট

i=input().split('|')
s,n=i[0],int(i[1])
c=len(s)//n
while n:print(s[:c]);s=s[c:];n-=1
print(s)

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


ইনপুটটি ভেরিয়েবলের মধ্যে রয়েছে তা ধরে নেওয়া কোনও বৈধ ইনপুট পদ্ধতি নয়
আরজান জোহানসেন

এটি যথারীতি যার অর্থ , I / O নমনীয়। ? যাইহোক ধন্যবাদ, আমি আমার উত্তর সম্পাদনা করছি ...
কিপ করুন

1
PPCG এর স্ট্যান্ডার্ড পদ্ধতি হয় চমত্কার নমনীয়। ঠিক তেমন কিছু না।
janর্জন জোহানসেন

0

পাওয়ারশেল v3 + , 72 , 80 বাইট

অনুমান $sইনপুট স্ট্রিং রয়েছে; $n"টুকরা" প্রতি অক্ষরের সংখ্যা ধারণ করে। এটি ধরে নিয়েছে যে "স্ট্রাইকমোড" বন্ধ রয়েছে। অন্যথায়, আসলে একটি অ্যারেতে আরও সূচকে যুক্ত হওয়ার কারণে একটি ত্রুটি ফিরে আসবে কারণ (যদি অ্যারেতে 4 উপাদান থাকে এবং আমি অস্তিত্বহীন 5 তম উপাদানটি কল করি)। স্ট্রাইকডমড বন্ধ থাকায়, পিএস যত্ন করে না এবং এটি ত্রুটিটিকে উপেক্ষা করবে।

for($i = 0;$i -le $s.Length;$i+=$n+1){-join($s|% ToCharA*)[$i..($i+$n)]}

স্বরলিপি ব্যবহার করে ($s|% ToCharA*)আমি তুলনায় 1 টি অক্ষর সংরক্ষণ করতে সক্ষম হয়েছিল $s.ToCharArray():)

হালনাগাদ:

চ্যালেঞ্জের প্রয়োজনীয়তাগুলি পূরণ করতে আপডেট কোড। আবার ধরে নিই$s হয় ইনপুট স্ট্রিং রয়েছে; তবে, এই $nসময়টিতে "টুকরো" সংখ্যা রয়েছে contains বাকীটি শেষ মুদ্রিত হয়েছে। এবং আমি পাওয়ারশেলের ডিভিশন অপারেটর ব্যবহার করেছি

0..($n-1)|%{$p=[math]::Floor($s.length/$n)}{$s|% Su*($_*$p) $p}{$s|% Su*($n*$p)}

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


আমি বিশ্বাস করি আপনি প্রশ্নটি ভুল বুঝেছেন, ইনপুটটি টুকরো সংখ্যা (বাকী অংশ বাদে)।
janrjan জোহানসেন

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