যতগুলি সম্ভব তার সমান পরিমাণের মানের তালিকায় এমন একটি সংখ্যা বিতরণ করুন যার সমষ্টিটি এই সংখ্যার সমান


15

সম্ভবত একটি সাধারণ কোড-গল্ফ চ্যালেঞ্জ। প্রদত্ত 2 ধনাত্মক পূর্ণসংখ্যা mএবং nএর একটি তালিকা তৈরি nমান যে ধনাত্মক পূর্ণসংখ্যা যার সমষ্টি সংখ্যার সমান হয় m। হয় আউটপুটে সমস্ত মান একই মান হয় বা পার্থক্য হ'ল 1।

উদাহরণ

উদাহরণ স্বরূপ

  • m=6এবং n=3হয়ে যাবে2, 2, 2
  • m=7এবং n=3হয়ে যাবে 2, 2, 3বা 2, 3, 2বা 3, 2, 2
  • m=7এবং n=2হয়ে যাবে 3, 4বা4, 3
  • m=7এবং n=1হয়ে যাবে7
  • m=7এবং n=8একটি ত্রুটি তৈরি করবে কারণ 8 ধনাত্মক পূর্ণসংখ্যার যোগফল 7 হতে পারে না।
  • m=10এবং n=4হয়ে যাবে 3, 3, 2, 2বা অন্য কোনও ক্রমবর্ধমান

বিধি

  • ইনপুট এবং আউটপুট উভয়ই ইতিবাচক পূর্ণসংখ্যা সম্পর্কে।
  • হয় আউটপুটে সমস্ত মান একই মান হয় বা পার্থক্য হ'ল 1।
  • তালিকার মানগুলির ক্রমটি গুরুত্বপূর্ণ নয়।
  • তালিকার মানগুলির যোগফল সমান m
  • যখন এটি দ্রবণযোগ্য না হয়, ত্রুটি বা একটি মিথ্যা মান উত্পন্ন করুন (উদাহরণস্বরূপ m = 7 এবং n = 8 এর ক্ষেত্রে)।
  • অন্যান্য নিয়মের ফলস্বরূপ m=8এবং এর n=3যে কোনও অনুমতি 3, 3, 2(না 2, 2, 4) উত্পন্ন করবে

বিজয়ী

এটি কোড-গল্ফ, তাই সংক্ষিপ্ততম বৈধ উত্তর - বাইটগুলিতে মাপা - জয় w


আমি ধরে নিচ্ছি শূন্য কি ধনাত্মক নয়?
TheLethalCoder


1
@ আরস আমি কোনও গণিতবিদ নই তবে আমি যা পড়েছি তা সাধারণত প্রসঙ্গে নির্ভর করে। কেউ বলে এটি স্বাক্ষরযুক্ত, কিছু ইতিবাচক এবং নেতিবাচক, কিছু ইতিবাচক ইত্যাদি
TheLethalCoder

1
@ ইতিমধ্যে লেথাল কোডার জাভাতে (এবং সাধারণভাবে ভাসমান পয়েন্ট), float a = -0f, b = 0f; System.out.println(a == b); System.out.println(a + "," + b);... উত্পাদন করে trueএবং দেয় -0.0,0.0। দেখুন, ইতিবাচক 0 এবং negativeণাত্মক 0 স্পষ্টভাবে দুটি স্বতন্ত্র সংখ্যা ... বাস্তবায়ন তাই বলে!
সকরাটিক ফিনিক্স

উত্তর:


2

গাইয়া , 4 বাইট

…÷l¦

এর জন্য প্রায় একটি বিল্ট-ইন রয়েছে ...

ব্যাখ্যা

…     Get the range [0 .. m-1].
 ÷    Split into n roughly even length chunks. Throws an error if the number of chunks if 
       more than the list's length.
  l¦  Get the length of each chunk.

আমি ভেবেছিলাম এখানে 05 বাইট 1 সমাধান সহ 4 বাইট সমাধান রয়েছে। এখন এটি চলে গেছে, এটি সিদ্ধান্ত নেওয়া আমার পক্ষে সহজ করে তোলে। অভিনন্দন এবং ধন্যবাদ!
ক্রিশ্চিয়ান ওয়েস্টারবিক


5

গণিত, 33 বাইট

#>#2&&Last@IntegerPartitions@##1&

ইনপুট

[, 63, ১১]

আউটপুট

{6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5}

সমাধানযোগ্য না হলে মিথ্যা আউটপুট দেয়


5

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

:gie!Xs

যখন কোনও সমাধান নেই তখন আউটপুট হ'ল কমপক্ষে একটি শূন্য সমন্বিত একটি অ্যারে, যা এমএটিএলে মিথ্যা।

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

ব্যাখ্যা

ইনপুট m = 10এবং বিবেচনা করুন n = 4

:      % Implicitly input m. Push [1 2 ... m]
       % STACK: [1 2 3 4 5 6 7 8 9 10]
g      % Logical: convert nonzeros to 1
       % STACK: [1 1 1 1 1 1 1 1 1 1]
i      % Input n
       % STACK: [1 1 1 1 1 1 1 1 1 1], 4
e      % Reshape into matrix with n rows, padding with zeros
       % STACK: [1 1 1;
                 1 1 1;
                 1 1 0;
                 1 1 0]
!      % Transpose
       % STACK: [1 1 1 1;
                 1 1 1 1;
                 1 1 0 0]
Xs     % Sum of each column. Implicitly display
       % STACK: [3 3 2 2]


4

কাঠকয়লা , 15 বাইট NDD প্রয়োগের পরে 1

¿÷NNIEIη÷⁺IθιIη

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

সমাধান না হলে কিছুই আউটপুট দেয়। ভার্বোজ সংস্করণে লিঙ্ক ।

1 এনডিডি = নিল চালিত বিকাশ।

আমার পূর্ববর্তী উত্তর:

কাঠকয়লা , 32 27 24 20 বাইট

NμNν¿÷μνIEν⁺÷μν‹ι﹪μν

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

সমাধান না হলে কিছুই আউটপুট দেয়। ভার্বোজ সংস্করণে লিঙ্ক ।

অবশ্যই, আমি নীলের সাহায্য ছাড়া এটি গল্ফ করতে পারে না।


Castঅপারেটর সরানো কোনও কারণে কাজ করে তবে এটি আদর্শ অ্যালগরিদম নয় ... আমার কাছে একটি 16 বাইট সমাধান রয়েছে।
নিল

@ নীল চ্যালেঞ্জ গ্রহণ!
চার্লি

আমি পূর্বনির্ধারিত পরিবর্তনশীলটি পছন্দ করি তবে এখন জেনেছি যে Castতালিকায় কাজ করে আমি 11 বাইটে নেমে যাচ্ছি ...
নিল

@ নীল এবং আমি এখনও ব্যবহার করতে পারছি না Map, পৃথিবীতে এটি কীভাবে কাজ করে ??
চার্লি

Mapforএকই লুপ ভেরিয়েবলটি ব্যবহার করে নিচের মত প্রকাশের সংস্করণ । সুতরাং আপনার উদাহরণে প্রতিবার একটি তালিকায় কোনও অভিব্যক্তি চাপানোর পরিবর্তে Mapস্বয়ংক্রিয়ভাবে সেগুলি সংগ্রহ করে ফলাফলের তালিকায় মূল্যায়ন করে।
নিল

3

আর , 33 বাইট

function(m,n)diff(trunc(0:n*m/n))

লুইস মেন্ডোর অক্টাভা উত্তরের একটি বন্দর । অত্যন্ত দুঃখের বিষয় যে এটি আমার আগের উত্তরের চেয়ে প্রায় 50% খাটো।

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

পূর্ববর্তী উত্তর, 63 বাইট:

function(m,n,o=rep(m%/%n,n),d=m-sum(o))o+c(rep(0,n-d),rep(1,d))

নাম প্রকাশে অনিচ্ছুক একজন ফাংশন যা দুটি (বাধ্যতামূলক) আর্গুমেন্ট লাগে mএবং nএবং দুটি ঐচ্ছিক যার golfing উদ্দেশ্যে ব্যবহৃত। ক্রমবর্ধমান ক্রমে একটি ভেক্টরকে ফেরত দেয়। ব্যর্থতার জন্য, প্রথম মানটি হবে 0যা আর-তে মিথ্যা, যেহেতু ifকেবলমাত্র ভেক্টরের প্রথম মান ব্যবহার করা হয় (একটি সতর্কতা সহ)।

এটি মূলত নিম্নলিখিত ফাংশনের সমতুল্য:

function(m,n){o=rep(m%/%n,n)
d=m-sum(o)
o+c(rep(0,n-d),rep(1,d))}

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


pryr::f(diff(trunc(0:n*m/n)))কাজ করে এবং খাটো!
জাদে

2

জেলি , 7 6 বাইট

:ȧœsL€

এটি অনলাইন চেষ্টা করুন!মিথ্যা জন্য আউটপুট কিছুই।

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

:ȧœsL€    Main link. Arguments: m (integer), n (integer)
:         Integer division. Yields 0 if m < n; a positive integer otherwise.
 ȧ        Logical AND. Yields 0 if m < n; m otherwise.
  œs      Split into n roughly equal groups. Since the left argument is an integer,
          this implicitly converts it to [1..m] (or [] for 0) before splitting.
    L€    Length of €ach. If the inputs were 7 and 3, the previous result would be
          [[1,2,3],[4,5],[6,7]], so this would give [3,2,2].

2

টিআই-বেসিক, 23 বাইট

:Prompt M,N
:N(M≥N
:int(Ans⁻¹randIntNoRep(M,M+N-1

ERR প্রদান করে: ত্রুটিতে 0 দিয়ে ভাগ করুন


2

অক্টাভা , 24 বাইট

@(m,n)diff(fix(0:m/n:m))

কোড একটি বেনামী ফাংশন সংজ্ঞায়িত করে। আউটপুটটি একটি সংখ্যাসূচক অ্যারে (সারি ভেক্টর)। যখন এই অ্যারে নেই তখন কমপক্ষে একটি শূন্য থাকে যা অক্টোভায় মিথ্যা

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

ব্যাখ্যা

0:m/n:mএকটি অ্যারের উৎপন্ন n+1থেকে মানগুলি 0করার mধাপ m/nfixপ্রতিটি প্রবেশের দিকে গোল করে 0, এবং diffএকটানা পার্থক্য গণনা করে।

উদাহরণস্বরূপ, এখানে সব অন্তর্বর্তী ফলাফল নেই m = 7, n = 3:

>> 0:m/n:m
ans =
         0    2.3333    4.6667    7.0000

>> fix(0:m/n:m)
ans =
     0     2     4     7

>> diff(fix(0:m/n:m))
ans =
     2     2     3

শূন্যযুক্ত একটি অ্যারে মিথ্যা। এটি একটি প্রসারিতের মতো মনে হয় তবে আমি অষ্টাভকেও জানি না। জাভাস্ক্রিপ্ট থেকে এর জবরদস্তি নিয়ে এসেছি, আমি কেন বলব না hell আমার কাছ থেকে +1
ক্রিশ্চিয়ান ওয়েস্টারবিইক

টুইটারে আপনি যদি অন্য ভাষা থেকে এসে থাকেন তবে এটি অদ্ভুত শোনায় তবে এটি ম্যাটল্যাব / অক্টাভাতে রয়েছে
লুইস মেন্ডো

2

হাস্কেল , 93 89 88 87 86 71 বাইট

m!n|n<=m=e$m:(0<$[2..n])
e(a:b:x)|b<a=e$a-1:e(b+1:x)
e(a:x)=a:e x
e x=x

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

ব্যাখ্যা

এখানে প্রধান ফাংশন eeএকটি তালিকা নেবে এবং মূলত বাম থেকে ডানে বরাবর একটি রোলিং পিন চালাবে। তালিকায় এমন একটি উপাদান রয়েছে যা তার প্রতিবেশীর চেয়ে ডান দিকে বড় হয় আমরা এর থেকে ডানদিকে নিয়ে যাব।

এখন আমাদের যা করতে হবে তা হ'ল এই ফাংশনটিকে যথেষ্ট পরিমাণে তালিকা দেওয়া এবং যাদুটি করার অনুমতি দেওয়া। আমরা যে তালিকাটি বেছে নেব তা কেবল শূন্যগুলি mঅনুসরণ করবে n-1। যেহেতু এটি তৈরি করা সহজ।

আমাদের শেষটি করা দরকার তা নিশ্চিত করে ত্রুটি কেস পরিচালনা করা হয়েছে। এই জন্য আমরা শুধু একটি নিক্ষেপNon-exhaustive patterns in function যতক্ষণ না ততক্ষণ ত্রুটিm>n


আমার মনে হয় আপনি পরিত্রাণ পেতে পারেন error[]পরিবর্তে একটি অ সম্পূর্ণ প্যাটার্ন সঙ্গে ব্যর্থ দ্বারা: m!n|m>n=e$m:replicate(n-1)0
লাইকনি

এর (0<$[1..n-1])চেয়ে ছোটও replicate(n-1)0
লাইকনি

2

সি # (.নেট কোর) , 86 82 71 বাইট

using System.Linq;a=>b=>new int[b].Select((x,i)=>(i<a%b?1:0/(a/b))+a/b)

অবৈধ ইনপুটগুলির জন্য একটি ত্রুটি নিক্ষেপ করে।

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

-4 বাইট ধন্যবাদ TheLethalCoder

-11 বাইট ধন্যবাদ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ


1
এই মুহুর্তে এটি কেবল একটি কোড স্নিপেট; আপনাকে কেবল এটি একটি বেনামি ফাংশন বা a=>b=>শুরুতে মোড়ানো প্রয়োজন ।
TheLethalCoder

@ লেথলকোডার হুম আপনি কি নিশ্চিত? আমি using System.Collections.Genericযদি ফিরে আসি তবে আমাকে যুক্ত করার দরকার নেই IEnumerable<int>?
লিফডওয়েভেন

আমি যেভাবেই হোক ভুল পেয়েছি কারণ আপনি একটি অ্যারে ফিরে আসছেন (আমি ত্রৈমাসিকের প্রথম অংশটি ভুলভাবে পড়েছি)। তবে এটি যদি আপনার কোডটিতে প্রদর্শিত IEnumerable<int>হয় এবং ফাংশন সংজ্ঞাতে এটি হিসাবে দেখা যায় তবে আপনাকে অবশ্যই অন্তর্ভুক্ত করতে হবে না using
TheLethalCoder 16

না, আপনার টিপটি কোডটি ছাড়াই এখনও ভাল। ToArray () এখনও সংকলন করে।
লিফডেভেন

1
@ অলিভিয়ারগ্রোগোয়ার আপনি ঠিক বলেছেন, দুঃখিত এবং আপনাকে ধন্যবাদ
লিফডওয়েভেন

2

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

m#n|m>=n=iterate(\(a:b)->b++[a+1])(0<$[1..n])!!m

nশূন্যগুলির একটি তালিকা দিয়ে শুরু করুন । পুনরাবৃত্তিm বার: প্রথম উপাদানটি নিন, একটি যুক্ত করুন এবং এটিকে তালিকার শেষে রাখুন।

যদি কোনও প্যাটার্ন ম্যাচের ত্রুটির সাথে ব্যর্থ হয় n < m

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


1

Braingolf , 30 বাইট

.M>.M/v.mR>[.]$_v%!?[R1+>v]|R=

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

বিপরীত ক্রমে ইনপুট নেয় (n প্রথম ইনপুট হয়, mদ্বিতীয় হয়)

ভাগ mদ্বারা n, ফলে সদৃশ nবার, তারপর মধ্য দিয়ে বাড়তি loops একের পর এক m % nবার


1

ব্যাচ, 71 বাইট

@if %1 geq %2 for /l %%i in (1,1,%2)do @cmd/cset/an=(%1+%%i-1)/%2&echo(

cmd/cset/aকোনও বিভাজক আউটপুট দেয় না, তাই আমাকে ব্যবহার করতে হবে echo(( (মুদ্রণ এড়ানো ECHO is on.)।


1

পিএইচপি> = 7.1, 62 বাইট

for([,$s,$n]=$argv;$n;)$s-=$r[]=$s/$n--^0;$r[0]?print_r($r):0;

পিএইচপি স্যান্ডবক্স অনলাইন


আপনার লিঙ্কটি স্যান্ডবক্সে ক্লিক করুন, এক্সিকিউট কোডটি ক্লিক করুন এবং আমি পার্স ত্রুটি পেয়েছি।
ক্রিশ্চিয়ান ওয়েস্টারবিইক

@ ChristianWesterbeek স্যান্ডবক্স পিএইচপি 7.0.3 এ ডিফল্ট হয়েছে।
নিল

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


1

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

lambda m,n:(m%n*[m/n+1]+[m/n or _]*n)[:n]

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

NameError যখন অসম্ভব।


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

lambda m,n:[c/n for c in range(m,m+n,m>=n)]

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

ValueError যখন অসম্ভব।


NameErrorত্রুটি হয়ে বেরিয়ে যাওয়ার জন্য কখনই ব্যবহার করার কথা ভাবেননি
ফিলিপ নারদী বাটিস্তা

1

জাভাস্ক্রিপ্ট (ES6), 57 56 53 41 বাইট

m=>n=>m>=n&&[...Array(n)].map(_=>m++/n|0)

উত্তরে এখন মানগুলি তৈরি করার চৌকস উপায় অন্তর্ভুক্ত। ধন্যবাদ @ নীল

ব্যবহার

f=m=>n=>m>=n&&[...Array(n)].map(_=>m++/n|0)

f(6)(3) // [2, 2, 2]
f(7)(3) // [3, 2, 2]
f(7)(2) // [4, 3]
f(7)(1) // [7]
f(7)(8) // false
f(8)(3) // [3, 3, 2]

ইতিহাস

প্রথম আমার

(m,n)=>m>=n&&Array(n).fill(~~(m/n)).map((v,i)=>v+(i<m%n))

(m,n)=>m>=n&&Array(n).fill().map((v,i)=>~~(m/n)+(i<m%n))

তারপরে স্প্রেড অপারেটর এবং কারেন্টিং সিনট্যাক্স যুক্ত করেছেন @ আরনাউল্ড by

m=>n=>m>=n&&[...Array(n)].map((v,i)=>~~(m/n)+(i<m%n))

1
_=>m++/n|0একগুচ্ছ বাইট সংরক্ষণ করে
নিল



0

পাইথ , 13 বাইট

KE?>KQ0lMcK*d

এটি অনলাইন চেষ্টা করুন! 0ত্রুটিতে আউটপুট ।

প্রতারণা, 6 বাইট

lMcE*d

এটি অনলাইন চেষ্টা করুন! অ্যারেতে একটি 0ত্রুটি রয়েছে । দুঃখজনকভাবে এই falsy নয় Pyth

ব্যাখ্যা

KE?>KQ0lMcK*dQ    # Implicit input Q for m
KE                # Store n in K
           *d     # Generate a string of length Q containing only spaces
         cK       # Chop this string in K pieces of equal sizes, initial piece longer if necessary
       lM         # For each string, compute the length. Here we already have our result. However if the array contain a zero, we must output a falsy value
  ?>KQ            # If K > Q...
      0           # Then display zero, otherwise display the array

0

সিজেম , 13 12 বাইট

{_2$>/,/z:,}

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

এটি একটি বেনামে ব্লক যা ইনপুট হিসাবে গ্রহণ করে n m স্ট্যাকের । এটি একটি ভাল উত্তর হতে পারে, কিন্তু ত্রুটি পরিচালনার প্রয়োজনীয়তা এটি পুরোপুরি মেরে ফেলেছে।

শূন্যের বিভাজনে ত্রুটিগুলি যখন সমাধান করা সম্ভব হয় না।

ব্যাখ্যা

{   e# Stack:                | 3 10
 _  e# Duplicate:            | 3 10 10
 2$ e# Copy from back:       | 3 10 10 3
 >  e# Greater than:         | 3 10 1 (true)
 /  e# Divide:               | 3 10
    e# This will cause an error on invalid input.
 ,  e# Range:                | 3 [0 1 2 3 4 5 6 7 8 9]
 /  e# Split on nth element: | [[0 1 2] [3 4 5] [6 7 8] [9]]
 z  e# Transpose array:      | [[0 3 4 9] [1 4 7] [2 5 8]]
 :, e# Length of each:       | [4 3 3]
}

যদি ত্রুটি-হ্যান্ডলিংয়ের প্রয়োজনীয়তা উত্তোলন করা হয় তবে এটি সংক্ষিপ্ত করে 7 টি বাইট করা যেতে পারে যা 40% এরও বেশি হ্রাস পেয়েছে:

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