যোগফল সর্বদা 15 হয়


36

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইনপুট হিসাবে অ-নেতিবাচক পূর্ণসংখ্যার অ্যারে নেয় এবং ইনপুট অ্যারের উপাদানগুলিকে ক্রম অনুসারে ভেক্টর / অ্যারেগুলির একটি সেট আউটপুট দেয়, বিভক্ত করুন যাতে প্রতিটি ভেক্টরের 15 এর যোগফল হয়। এন উপাদানগুলি "15 টি" আঘাত করে না, তারপরে 15 নম্বরটি পাস করার সংখ্যাটি অবশ্যই কেটে ফেলতে হবে, এবং অবশিষ্ট অংশটি পরবর্তী ভেক্টরের প্রথম উপাদান হবে। আপনি ইনপুট অ্যারের শেষ না হওয়া পর্যন্ত এটি চলে goes চূড়ান্ত ভেক্টরের যোগফল যদি 15 টিরও কম হয়, তবে যোগফলটি আরও বাড়ানোর জন্য শেষে অবশ্যই একটি সংখ্যা যুক্ত করতে হবে।

আমি মনে করি উদাহরণগুলি দেখে নিয়মগুলি আরও সহজে বোঝা যায়:

Input: 3 7 5 10
Output:
3 7 5           <- Sum is 15
10 5            <- 5 is added to make the sum 15

Input: 2 4 5 9 2 3 5 0 2 4 5 0 3
Output:
2 4 5 4          <- Sum 15. 9 is split in two. 
5 2 3 5          <- The first 5 is the remainder of 9
0 2 4 5 0 3 1    <- The last number is added to make the sum 15

Input: 1 1 1            
Output:
1 1 1 12         <- The number 12 is added to make the sum 15

Input: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Output:
1 2 3 4 5
6 7 2           <- 2 is the first part of 8
6 9             <- 6 is the remainder of 8
10 5            <- 5 is first part of 11
6 9             <- 6 is remainder of 11. 9 is first part of 12
3 12            <- 3 is remainder of 12. 12 is first part of 13
1 14            <- 1 is remainder of 13. 14 is 14
15
15              <- 15 is first part of 16
1 14            <- 1 is remainder of 16. 14 is first part of 17
3 12            <- 3 is remainder of 17. 12 is added to make the sum 15

Input: 20 20
Output:
15
5 10           <- 5 is remainder from the first 20
10 5           <- 10 is remainder from second 20. 5 is added to make the sum = 15.

ইনপুট এবং আউটপুট বিন্যাস উভয়ই alচ্ছিক। আপনার ভাষায় যা কিছু ভাল।

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


লিডারবোর্ড

এই পোস্টের নীচে স্ট্যাক স্নিপেট উত্তরগুলি থেকে ক্যাটালগ তৈরি করে a) ভাষার প্রতি সংক্ষিপ্ত সমাধানের তালিকা হিসাবে এবং খ) সামগ্রিক লিডারবোর্ড হিসাবে।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

## Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

## Ruby, <s>104</s> <s>101</s> 96 bytes

সেখানে যদি আপনি আপনার শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের যোগফল বা আপনি আলাদাভাবে দোভাষী পতাকা শুল্ক তালিকাভুক্ত করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

## Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও তৈরি করতে পারেন যা স্নিপেটে প্রদর্শিত হবে:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


'আউটপুট ফর্ম্যাট alচ্ছিক'। তার মানে কি [[3, 7, 5], [10, 5]]প্রথম পরীক্ষার ক্ষেত্রে বৈধ আউটপুট হবে?
মরগান থ্রাপ 19

@ মরগানথ্রাপ, হ্যাঁ এটা বৈধ
স্টিভি গ্রিফিন 19

1
@ ফ্ল্যাগএএসপ্যাম, আপনি যে উদাহরণটির বিষয়ে জিজ্ঞাসা করছেন তাতে আমি আরও ব্যাখ্যা যুক্ত করেছি।
স্টিভি গ্রিফিন 19

3
ভাল পরীক্ষার কেস:Input: 100 Output: 15; 15; 15; 15; 15; 15; 10 5
এলোমেলো

3
এটি অবশ্যই ফিজবুজ পরীক্ষাটি প্রতিস্থাপন করবে
সিএসᵠ

উত্তর:


8

পাইথ, 37 বাইট

K15VQ=+ZNIgZK=-ZK-NZbIZZ)).?N;I>KZ-KZ

ব্যাখ্যা

K15              Store 15 in K (the max) (K is Autoinitializing, no = needed here)
VQ              For N in the evaluated input
  =+ZN           Set Z(Which in pyth defaults to 0) to Z+N
  IgZK           If Z(row total) is greater than or equal to K (row max)
    =-ZK         Set Z to Z-K (How much the max was exceeded)
    -NZ          Implicitly print N-Z
    b            Implicitly print b (in pyth defaults to a newline)
    IZ         If Z > 0 (There was excess to carry to the next row)
      Z          Implicitly print Z (the excess)
  .?N            Else(the current row count is < the max(15)) output the current number
;                Use infinite )'s in place of )) (to save 1 character)
I>KZ             If K > Z (The max is greater than the current row count)
  -KZ           Implicitly print K-Z (The amount needed for the row to equal 15)

এটি ছিল আমার প্রথম অজানা, সুতরাং উন্নতিগুলির পরামর্শ দিতে নির্দ্বিধায়।

উদাহরণ:

ইনপুট

[1, 3, 4, 5, 9, 8]

আউটপুট

1
3
4
5
2


7
8

দ্রষ্টব্য: আইজ্যাককে অনেকগুলি বাইট আকার হ্রাস করার পরামর্শ এবং প্রথম স্থানে পাইথ তৈরি করার জন্য ধন্যবাদ! দয়া করে নীচে তার মন্তব্য upvote :)


2
অন্যটি .?পরিবর্তে পরিবর্তে পরিবর্তে পরিবর্তিত হয়েছিল Eতবে আমি ডক্স আপডেট করতে ভুলে গিয়েছি। এর জন্যে দুঃখিত.
isaacg

ধন্যবাদ আইস্যাক আমার এখন কাজ করা উচিত। যদিও এটি এখন কেবলমাত্র 1 টি বাইট সংরক্ষণ করে কারণ এখন অন্য 2 টি অক্ষর।
csga5000

1
আমরা কথা বলার সাথে সাথে এটি ঠিক করা।
isaacg

3
কয়েকটি অন্যান্য পরামর্শ: =Z+ZNএবং =+ZNএকই রকম। এটি কিছুটা পাইথনের মতো +=। লাইকুইস, =Z-ZK-> =-ZK। এছাড়াও, আপনার )শেষের প্রয়োজন নেই - এটি স্বয়ংক্রিয়ভাবে পূরণ করা হয়। অবশেষে, FNQএবং VQএকই।
isaacg

1
আপনি প্রতিস্থাপন দ্বারা অন্য 2 বাইট সংরক্ষণ করতে পারবেন I>Z0সঙ্গে IZ- Zনেতিবাচক হতে পারে না, তাই আপনি সত্যিই শুধু যদি চেক করছি Zশূন্য নয়, এবং শূন্য falsy, যখন সব অন্যান্য সংখ্যার truthy হয়।
isaacg

16

জাভা - 229 200 192 181 172 170 168 বাইট

ইতিমধ্যে শুরু হয়েছিল, জয়ের জন্য নয় মজাদার জন্য :)
কোনও পরামর্শ স্বাগত।

@ThomasKwa সংরক্ষণ 8 বাইট ধন্যবাদ
@corsiKa এ সংরক্ষিত 20 বাইট ধন্যবাদ
@Ypnypn এ সংরক্ষিত 2 বাইট ধন্যবাদ
@ user902383 এ সংরক্ষিত 2 বাইট ধন্যবাদ

String p(int[]a){int c=0,j;String s="";f:for(int i:a){for(j=i;j-->0;)if(++c>14){s+=(i-j)+"\n";c=0;if(j<15){if(j>0)s+=j+" ";c+=j;continue f;}}s+=i+" ";}return s+(15-c);}

170 বাইট

String p(int[]a){int c=0,j;String s="";f:for(int i:a){for(j=i;j-->0;){if(++c>14){s+=(i-j)+"\n";c=0;if(j<15){if(j>0)s+=j+" ";c+=j;continue f;}}}s+=i+" ";}return s+(15-c);}

172 বাইট

String p(int[]a){int c=0,j;String s="";f:for(int i:a){for(j=i;j>0;){j--;if(++c>14){s+=(i-j)+"\n";c=0;if(j<15){if(j>0)s+=j+" ";c+=j;continue f;}}}s+=i+" ";}return s+(15-c);}

181 বাইট

void p(int[]a){int c=0,j;String s="";f:for(int i:a){for(j=i;j>0;){j--;if(++c>14){s+=(i-j)+"\n";c=0;if(j<15){if(j>0)s+=j+" ";c+=j;continue f;}}}s+=i+" ";}System.out.print(s+(15-c));}

192 বাইট

void p(int[]a){int c=0,j;String s="";f:for(int i:a){for(j=i;j>0;){j--;c++;if(c==15){s+=(i-j)+"\n";c=0;if(j>=15)continue;if(j>0)s+=j+" ";c+=j;continue f;}}s+=i+" ";}System.out.print(s+(15-c));}

200 বাইট

void p(int[]a){int c=0,j;String s="";f:for(int i:a){j=i;while(j>0){j--;c++;if(c==15){s+=(i-j)+"\n";c=0;if(j>=15)continue;else{if(j!=0)s+=j+" ";c+=j;continue f;}}}s+=i+" ";}System.out.print(s+(15-c));}

229 বাইট

void p(int[]a){int c=0,j;f:for(int i:a){j=i;while(j>0){j--;c++;if(c==15){System.out.print(i-j+"\n");c=0;if(j>=15){continue;}else{if(j!=0)System.out.print(j+" ");c+=j;continue f;}}}System.out.print(i+" ");}System.out.print(15-c);}

String p(int[] a) {
    int c = 0, j;
    String s = "";
    f: for (int i: a) {
        for (j = i; j-- > 0;)
            if (++c > 14) {
                s += (i - j) + "\n";
                c = 0;
                if (j < 15) {
                    if (j > 0) s += j + " ";
                    c += j;
                    continue f;
                }
            }
        s += i + " ";
    }
    return s + (15 - c);
}

1
বাহ, এখন অবধি জাভা প্রোগ্রামে ব্যবহার করা চালিয়ে যাওয়া দেখেনি।
ম্যাজিক অক্টোপাস আরন

7

পাইথন 3 - 1̶7̶7̶ 1̶3̶8̶ 1̶6̶6̶ 1̶3̶3̶ 113

s=0
i=15
p=print
for e in eval(input()):
 if s>=i:p()
 s=s%i+e
 if s>i:s-=i;p(e-s);p();e=s
 p(e)
if s!=i:p(i-s%i)

5 সম্পাদনা করুন সত্যই গল্ফ করা ধন্যবাদ @ পোকে * মুছে ফেলা লাইন ব্রেক ইত্যাদি

4 বর্ধিত মুদ্রণ সম্পাদনা করুন এবং বাইট সংরক্ষণ করতে a - = দিয়ে একটি = প্রতিস্থাপন করুন। @ পোকে এবং @ লেজেলকে ধন্যবাদ। অ্যাসাইনমেন্ট থেকে 2 বাইট সংরক্ষণ করতে লুপের জন্য ইনপুট ইভাল সরানো হয়েছে

3 সম্পাদনা করুন সেকেন্ডের মধ্যে বিভিন্ন ওওতে সঞ্চয় পাওয়া গেছে যদি

2 স্থির বাগ সম্পাদনা করুন

সম্পাদনা 1 ইনপুটটি '[1,2,3,4,5 ...]' আকারে পরিবর্তন করেছে এবং প্রথম দুটি মন্তব্য বাস্তবায়িত করেছে, @ মরগান থ্র্যাপকে ধন্যবাদ

এখানে প্রথমবারের পোস্টার। ইনপুট হ'ল ফাঁক দিয়ে পৃথক এন্ট্রি সহ কমান্ড লাইন, আউটপুট প্রতি লাইনে প্রবেশ, গ্রুপিংয়ের মধ্যে একটি নতুন লাইন রয়েছে।


3
আপনি ভেরিয়েবলের 15 নিযুক্ত করে এবং কেবল ইনডেন্টেশনের জন্য একটি স্থান ব্যবহার করে এটি 122-এ নামতে পারবেন।
মরগান থ্রাপ 21

এছাড়াও, আপনি দ্বিতীয় পরীক্ষার ক্ষেত্রে ব্যর্থ হন, আমি 2 3 5 পাই, তবে এটি 5 2 3 5 হওয়া উচিত
মরগান থ্রাপ

1
@ অ্যাডামার্টিন আপনি আপনার কোডের আমার পাইথ সংস্করণে আগ্রহী হতে পারেন
csga5000

1
যেহেতু আপনি ব্যবহার করছেন printতাই প্রায়ই, আপনি এটি একটি পরিবর্তনশীল হিসাবে সংরক্ষণ করা উচিত: p=print। আপনাকে আরও 14 টি অক্ষর বাঁচায়।
অকর্মা

2
বর্তমান গণনা 132, তবে আপনি কিছু লাইন ব্রেকগুলি সরিয়ে ফেললে আপনি এটি 113 এ নামতে পারেন। আপনি যদি একক লাইনে প্রতিটি একত্রিত করতে পারেন, যেমন if s>i:s-=i;p(e-s);p();e=sদ্বিতীয়টির জন্য। এটি আপনাকে লাইন ব্রেক এবং ইনডেন্টেশন অক্ষর সংরক্ষণ করে।
অকর্মা

7

হাস্কেল, 126 107 102 100 বাইট

[]#c=[]
(h:t)#c|s<0=t#u|s<1=u:t#[]|1<2=(c++[h-s]):(s:t)#[]where s=sum c+h-15;u=c++[h]
(#[]).(++[14])

ব্যবহারের উদাহরণ: (#[]).(++[14]) $ [1..17]->[[1,2,3,4,5],[6,7,2],[6,9],[10,5],[6,9],[3,12],[1,14],[15],[15],[1,14],[3,12]]

সম্পাদনা করুন: @ স্টেভি গ্রিফিন আমাকে 19 বাইট সংরক্ষণে সহায়তা করেছেন। ধন্যবাদ!


4

সিজেম, 39 বাইট

q~0af*Sf*N*30/{S-N/:,F1$:+-+0+e`W<e~p}/

এটি এখানে পরীক্ষা করুন।

এটি অত্যন্ত সাবমোটিমাল অনুভব করে তবে এখন পর্যন্ত সংক্ষিপ্ত সমাধানে আমার সমস্ত প্রচেষ্টা ইনপুটটিতে শূন্যের উপস্থিতি দ্বারা ব্যর্থ হয়েছে।


4

Python2 Regex দ্বারা চালিত : 158 155 বাইট

ভালবাসায় অজগরে তৈরি এবং প্রায় কোনও গণিত নেই।
বা রেজেেক্স ম্যাথ যদি আপনি চান, অ্যানারি গণিত।
'রিয়েল' গণিত কেবল শেষ প্রয়োজনটি 'ঠিক' করতে ব্যবহৃত হত:

চূড়ান্ত ভেক্টরের যোগফল যদি 15 টিরও কম হয়, তবে যোগফলটি আরও বাড়ানোর জন্য শেষে অবশ্যই একটি সংখ্যা যুক্ত করতে হবে।

Codegolfed:

import re
def f(i):o=[map(len,p.split())for p in re.findall('((?:x *){15}|.+)',' '.join(['x'*c for c in i]))];l=sum(o[-1]);o[-1]+=([],[15-l])[l<15];print o

এটি যেভাবে কাজ করে তা হ'ল প্রতিটি সংখ্যা এনকে দৈর্ঘ্যের স্ট্রিনে রূপান্তর করে ( x স্ট্রিংটি পূরণের জন্য চর হিসাবে নির্বাচিত) এবং সেগুলি পৃথক করে একটি স্পেসে যুক্ত করা stringরেজাল্টিং স্ট্রিংকে রেজিএক্স ব্ল্যাক ম্যাজিকের মাধ্যমে এমন কিছুতে ভাগ করা হয়:

['x xx xxx xxxx xxxxx ', 'xxxxxx xxxxxxx xx', 'xxxxxx xxxxxxxxx', 'x']

যেমন একটি ইনপুট জন্য: f([1, 2, 3, 4, 5, 6, 7, 8, 10])
এটি আবার বিভক্ত, এবং একটানা xএস এর দৈর্ঘ্য আবার সংখ্যা তৈরি করতে ব্যবহৃত হয়, একটি তালিকা বোধগম্যভাবে সবকিছু প্যাক করা।

Ungolfed:

import re
o = [map(len, p.split()) for p in re.findall('((?:x *){15}|.+)', ' '.join(['x'*c for c in i]))]
l = sum(o[-1])
o[-1] += ([], [15-l])[l<15]
print o

আউটপুট:

>>> f([30, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16])
[[15], [15], [1, 2, 3, 4, 5], [6, 7, 2], [6, 9], [15], [1, 14]]

দ্রষ্টব্য: 0 এর দশকের জন্য পর্যাপ্ত যাদু ছিল না তাই এই এন্ট্রিটিকে অযোগ্য ঘোষণা করে

শূন্যগুলি অবশ্যই অন্তর্ভুক্ত থাকতে হবে। দ্বিতীয় উদাহরণ দেখুন


সমস্ত ফাংশন নাম বরং ব্যয়বহুল। কোড গল্ফে রেগেক্সের মতো কিছু ব্যবহার করা প্রায় অসম্ভব। তবুও, আপনার বাইট আকারটি খারাপ বিবেচনা করে নয়
csga5000

4

গুরুতরভাবে, 88 বাইট

,`'!*'0`M' j0╗`;;;'|ε35*('!=╜+;╗%(' =|('0=|I)`Mεj'|@s`ôl`╝`ö'0@s╛M`Md;Σ35*-;`X``@q`Iƒ@q.

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

এটি আমার প্রথম সিরিয়াসলি উত্তর! এখন আমি ভাষার সমস্ত ত্রুটিগুলি সম্পর্কে ঘনিষ্ঠভাবে পরিচিত!

হেক্স ডাম্প:

2c6027212a2730604d27206a30bb603b3b3b277cee33352a2827213dbd2b3bbb252827203d7c2827303d7c49
29604dee6a277c407360936c60bc609427304073be4d604d643be433352a2d3b60586060407160499f40712e

ব্যাখ্যা:

,`'!*'0`M' j         Replace all the numbers by "0"+"!"*n, separated by " "
0╗                   Initialize an accumulator in register 0
` ... `M             Map the string with the following function:
   ;;;'|ε                Put three extra copies of the character, a pipe, an empty string
   35*                   and a 15 on the stack.
   ('!=                  Move one copy of the character to the top and push 1 if it's a !
   ╜+                    Load the accumulator, add the 1 or 0 from the preceding test
   ;╗                    Make a copy, and save it back to register 0
   %                     Modulo the sum by 15
   (' =|                 Or the result with whether the dug-up character is " "
   ('0=|                 Or the result with whether the dug-up character is "0"
   I                     If we're at " " or "0" or the current sum is not divisible by 15,
                         push empty string, else push "|"
   )                     Bury the new character under the original character.
εj                   Join the list that resulted from the map into a single string.
'|@s                 Resplit the string on occurrences of "|" (after every 15 "!"s)
`ôl`╝                Store a function in register 1 which trims whitespace
                     and returns the length of the remaining string
` ... `M             Map the list with the following function:
   ö                     Trim leading spaces.
   '0@s                  Split the string on occurrence of "0"
   ╛M                    Map the resulting list with the function stored in register 1
d;                   Push the last sublist from the resulting list and make a copy.
Σ                    Find the sum of the list.
35*-                 Subtract it from 15
;`X``@q`Iƒ           Duplicate it, drop it if it's zero, put it in the list otherwise.
@q.                  Put the list back in the big list and print it.

যদি ইউনিকোড কোড পয়েন্ট ব্যবহার করা হয়, তবে এই অক্ষরগুলি কি প্রতিটি 2 বাইট হিসাবে গণনা করা হয়? : পি
ড্যান

আমি অঙ্কিত উত্সে ইউনিকোড ব্যবহার করছি যাতে এটি দেখতে বোঝার উপায়টি পড়তে পারে। অন্যথায় এটি অপ্রিনিতযোগ্য পূর্ণ র্যান্ডম আবর্জনার মতো দেখায়। অফিসিয়াল উত্স হেক্স ডাম্প।
কুইন্টোপিয়া

এটি একটি হাস্যকর প্রশ্ন হতে চেয়েছিল
ড্যান

1
এটি একটি যুক্তিসঙ্গত প্রশ্নও ছিল যা অন্য পাঠক সম্পর্কে ভাবতে পারে, তাই আমি এটি হাস্যকরভাবে উত্তর দিয়েছি।
কুইন্টোপিয়া

একটি নতুন গল্ফিং ভাষা চেষ্টা করার জন্য @ কুইন্টোপিয়া +1! নতুন ভাষাগুলি মজাদার;) আমি প্রথমবারের মতো এই প্রশ্নটিতেও চেষ্টা করেছি।
csga5000

3

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

i=>eval("for(o=z=n='',m=15,t=q=0;q<i.length;q++)(t+=c=+i[q])>=m?(t-=m,z+=c-t,o+=z+`\n`,z=t>0?t+' ':n):z+=c+' ';t<m?o+z+(m-t):o")

সাদা স্থান সহ:

i => eval("
  for(o=z=n='', m=15, t=q=0; q < i.length; q++)
    (t+=c=+i[q])>=m
      ?(
        t-=m,
        z+=c-t,
        o+=z+`\n`,
        z=t>0?t+' ':n)
      :
        z+=c+' '
    ;
  t<m ? o+z+(m-t) : o
")

উদাহরণ:

একটি চলক ফাংশন বরাদ্দ করুন

sumFifteen=i=>eval("for(o=z=n='',m=15,t=q=0;q<i.length;q++)(t+=c=+i[q])>=m?(t-=m,z+=c-t,o+=z+`\n`,z=t>0?t+' ':n):z+=c+' ';t<m?o+z+(m-t):o")

তারপরে যেমন মূল্যায়ন করুন:

console.log(sumFifteen([1,4,11,4,5]))

1 4 10
1 4 5 5

পরিবর্ধন ও পরিবর্তন তালিকা:

12/3/2015 00:02 - 10 বাইট উন্নতির জন্য ব্যবহারকারী 81655 (মন্তব্যগুলিতে তাকে +1) ধন্যবাদ

12/2/2015 21:44 - আকার হ্রাস করতে ক্রিয়ামূলক শৈলী ব্যবহার করতে স্যুইচ করা হয়েছে।


3
: আপনি এই সঙ্গে এই উন্নতি করতে পারে f=সাইটের নিয়ম অনুযায়ী প্রয়োজন হয় না, থেকে প্রথম বন্ধনী অপসারণ (i)সঙ্গে, পারিপার্শ্বিক evalযাতে আপনি প্রয়োজন হবে না returnবা বন্ধনী এবং প্রতিস্থাপন ifএকটি তিন সাথে যাতে oফিরে এসে পরিবর্তন হয় '\n'থেকে `\n`একত্রীকরণ, t+=...সঙ্গে t>=mজন্য মুছে ফেলার জন্য লুপ বন্ধনী এই সমস্ত উন্নতি সহ 127 বাইটে আপনার সমাধান এখানে রয়েছে:i=>eval("for(o=z=n='',m=15,t=q=0;q<i.length;q++)(t+=c=+i[q])>=m?(t-=m,z+=c-t,o+=z+`\n`,z=t>0?t+' ':n):z+=c+' ';t<m?o+z+(m-t):o")
user81655

@ user81655 আমি সেগুলির কিছু পরিবর্তন বাস্তবায়ন করব! আমি যখন আপনার চেষ্টা করি তখন আমি একটি সিনট্যাক্স এরর পাই: অপ্রত্যাশিত টোকেন আইলিজাল (...)। দ্রষ্টব্য, ফাংশনটি পরীক্ষা করার জন্য আমি f =
csga5000

1
o+লাইনের শেষে এসও কিছু চিহ্ন যোগ করে। মুছুন o+=zএবং আবার লিখুন এবং এটি কার্যকর হবে। : পি
ব্যবহারকারী 81655

@ user81655 আমি দেখতে পাচ্ছি না কীভাবে \nকোনও তফাত হয়
csga5000

1
মানে `\n`? কোডটি ভিতরে "..."থাকার কারণে এটি এটি ছাড়া কাজ করবে না eval
ব্যবহারকারী 81655

2

পাইথন 3: 139 বাইট

অন্যান্য উত্তরের চেয়ে কিছুটা ভিন্ন পদ্ধতি। প্রশ্ন থেকে আসল আউটপুট উত্পাদন করে কারণ আমি প্রাথমিকভাবে ধরে নিয়েছিলাম যে এটি একটি প্রয়োজনীয়তা।

def f(l):
 m=15;r,s=sum(l)%m,0
 if r:l+=[m-r]
 while l:
  x=l.pop(0)
  if s+x>m:y=m-s;l[0:0]=[x-y];x=y
  s+=x;print(x,end=' \n'[s==m]);s%=m

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

>>> f([2, 4, 5, 9, 2, 3, 5, 0, 2, 4, 5, 0, 3])
2 4 5 4
5 2 3 5
0 2 4 5 0 3 1

2

পার্ল, 86 বাইট

#!perl -p
s|\d+( ?)|($i+=$&)<15?$&:($a=$&-($i%=15)).$/.($&>$a&&$&-$a.$1)|ge;$\=$".(15-$i)if$i

শেবাংকে তিন হিসাবে গণনা করা, স্ট্যান্ডিন থেকে স্থান ইনপুট নেওয়া হয়।


নমুনা ব্যবহার

$ echo -n 2 4 5 9 2 3 5 0 2 4 5 0 3 | perl sum15.pl
2 4 5 4
5 2 3 5
0 2 4 5 0 3 1

2

আর, 155 বাইট

n=scan();while(S<-sum(n)){C=cumsum(n);if(S>14){w=which(C>14)[1];N=n[1:w];n=n[-(1:w)];r=C[w]-15;N[w]=N[w]-r;if(r)n=c(r,n);cat(N,"\n")}else{cat(n,15-S);n=0}}

ইনডেন্ট এবং লাইনব্রেক সহ:

n=scan()
while(S<-sum(n)){
     C=cumsum(n)
     if(S>14){
         w=which(C>14)[1]
         N=n[1:w]
         n=n[-(1:w)]
         r=C[w]-15
         N[w]=N[w]-r
         if(r) n=c(r,n)
         cat(N,"\n")
         }else{
            cat(n,15-S)
             n=0
             }
      }

ব্যবহার:

> n=scan();while(S<-sum(n)){C=cumsum(n);if(S>14){w=which(C>14)[1];N=n[1:w];n=n[-(1:w)];r=C[w]-15;N[w]=N[w]-r;if(r)n=c(r,n);cat(N,"\n")}else{cat(n,15-S);n=0}}
1: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
18: 
Read 17 items
1 2 3 4 5 
6 7 2 
6 9 
10 5 
6 9 
3 12 
1 14 
15 
15 
1 14 
3 12
> n=scan();while(S<-sum(n)){C=cumsum(n);if(S>14){w=which(C>14)[1];N=n[1:w];n=n[-(1:w)];r=C[w]-15;N[w]=N[w]-r;if(r)n=c(r,n);cat(N,"\n")}else{cat(n,15-S);n=0}}
1: 20 20
3: 
Read 2 items
15 
5 10 
10 5
> n=scan();while(S<-sum(n)){C=cumsum(n);if(S>14){w=which(C>14)[1];N=n[1:w];n=n[-(1:w)];r=C[w]-15;N[w]=N[w]-r;if(r)n=c(r,n);cat(N,"\n")}else{cat(n,15-S);n=0}}
1: 10 5
3: 
Read 2 items
10 5 
> n=scan();while(S<-sum(n)){C=cumsum(n);if(S>14){w=which(C>14)[1];N=n[1:w];n=n[-(1:w)];r=C[w]-15;N[w]=N[w]-r;if(r)n=c(r,n);cat(N,"\n")}else{cat(n,15-S);n=0}}
1: 2 4 5 9 2 3 5 0 2 4 5 0 3
14: 
Read 13 items
2 4 5 4 
5 2 3 5 
0 2 4 5 0 3 1

2

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

i=input()
while i:
 s=15;r=[]
 while s>0:n=i.pop(0)if i else s;s-=n;r+=[n]if s>=0 else[n+s]
 if s<0:i=[-s]+i
 print r

তালিকা হিসাবে ইনপুট নেয়:

>>[2,4,5,9,2,3,5,0,2,4,5,0,3]
[2, 4, 5, 4]
[5, 2, 3, 5]
[0, 2, 4, 5, 0, 3, 1]

1

পার্ল, 76 বাইট

জন্য +3 অন্তর্ভুক্ত -p (সাধারণত +1, তবে অন্যান্য পার্ল সমাধানের সাথে ফেয়ার খেলতে +3) অন্তর্ভুক্ত থাকে

এসটিডিএন-এ ইনপুট দিয়ে চালান (ইনপুটটিতে চূড়ান্ত নিউলাইন optionচ্ছিক, তবে খালি ইনপুটটির জন্য অনুপস্থিত থাকতে হবে )

sum15.pl <<< "1 2 3"

sum15.pl:

#!/usr/bin/perl -p
s/$/ 15/;s/\d+/1x$&/eg;s/( *1){15}\K ?/
/g;s/
1*
*$//;s/1+|\B/length$&/eg

মা দেখুন, কোনও গণনা নেই ...


আগের চেয়ে বেশি দেরী! খুব সুন্দর সমাধান যদিও :)
দাদা

0গুলি এই সমাধানটিতে বরং জটিল (অতিরিক্ত স্থান দ্বারা প্রতিনিধিত্ব করা) এবং এসের সংখ্যাটি 0সঠিক রাখতে স্পেসগুলি সঠিকভাবে পরিচালনা করার জন্য আমাকে খুব যত্নবান হতে হবে । বিশেষ করে ইনপুট বিবেচনা যেখানে একটি আংশিক যোগফল ঠিক 15, মত 1 14 2 13। `?
Without

হ্যাঁ, আমি এটি চেষ্টা করে দেখেছি যে 0 টি যেখানে আপনি বলেছেন কিছু লাইনের শুরুতে যুক্ত হয়েছিল (সে কারণেই আমি আমার মন্তব্য পোস্ট করার 30 সেকেন্ড পরে মুছে ফেলেছি)। ধন্যবাদ
দাদা

0

জাভা - 158 155 বাইট

ইয়াসিন-হাজ্জ দ্বারা https://codegolf.stackexchange.com/a/65590/46866 এর ল্যাম্বডা সংস্করণ, বৈধ জমা দেওয়ার বিষয়ে নিশ্চিত নন তবে লিঙ্কিত উত্তরের বিষয়ে কোনও মন্তব্য যুক্ত করার মতো পর্যাপ্ত প্রতিনিধি নেই। Http://meta.codegolf.stackexchange.com/questions/4944/byte-counter- স্নিপেট ব্যবহার করে গণনা করা হয়েছে

a->{int c=0,j;String s="";f:for(int i:a){for(j=i;j-->0;)if(++c>14){s+=(i-j)+"\n";c=0;if(j<15){if(j>0)s+=j+" ";c+=j;continue f;}}s+=i+" ";}return s+(15-c);}

158 বাইট

a->{int c=0,j;String s="";f:for(int i:a){for (j=i;j-->0;)if(++c>14){s+=(i-j)+ "\n";c=0;if(j<15){if(j>0)s+=j+" ";c+=j;continue f;}}s+=i+ " ";}return s+(15-c);}

Ungolfed

a ->
    {
        int c=0, j;
        String s = "";
        f:
        for (int i : a) {
            for (j = i; j-- > 0; )
                if (++c > 14) {
                    s += (i - j) + "\n";
                    c = 0;
                    if (j < 15) {
                        if (j > 0) s += j + " ";
                        c += j;
                        continue f;
                    }
                }
            s += i + " ";
        }
        return s + (15 - c);
    }

মত ব্যবহার করা যেতে পারে

Function<int[], String> func =a->{int c=0,j;String s="";f:for(int i:a){for (j=i;j-->0;)if(++c>14){s+=(i-j)+ "\n";c=0;if(j<15){if(j>0)s+=j+" ";c+=j;continue f;}}s+=i+ " ";}return s+(15-c);};
System.out.println(func.apply(new int[]{2, 4, 5, 9, 2, 3, 5, 0, 2, 4, 5 ,0 ,3}));
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.