প্রথম 'এন' নম্বর থেকে জিরো তৈরি করুন


15

চ্যালেঞ্জ

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

উদাহরণস্বরূপ, যদি ইনপুটটি 3 হয় তবে যোগফল 0 করার 2 উপায় রয়েছে:

 1+2-3=0
-1-2+3=0

মনে রাখবেন, সংখ্যাগুলি 1 থেকে শুরু করে এন পর্যন্ত ক্রমযুক্ত (যা এই ক্ষেত্রে 3 টি)। যেমন উদাহরণ থেকে স্পষ্ট হয়, প্রথম সংখ্যার সাইনটিও নেতিবাচক হতে পারে, তাই সাবধান হন।

এখন, 3 বেশ সহজ ছিল। যখন আমরা 7 নম্বরটি বিবেচনা করি তখন সমস্ত উপায়ে তালিকাবদ্ধ করুন।

 1+2-3+4-5-6+7=0
 1+2-3-4+5+6-7=0
 1-2+3+4-5+6-7=0
 1-2-3-4-5+6+7=0
-1+2+3+4+5-6-7=0
-1+2-3-4+5-6+7=0
-1-2+3+4-5-6+7=0
-1-2+3-4+5+6-7=0

সুতরাং এখানে, আমরা মোট 8 টি সম্ভাব্য উপায় পেয়েছি।


ইনপুট এবং আউটপুট

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

এছাড়াও, আপনি আপনার পছন্দ মতো যে কোনও বিন্যাসে আউটপুট মুদ্রণ করতে পারেনতবে, এটি বোধগম্য হওয়া উচিত । উদাহরণস্বরূপ, আপনি উপরের উদাহরণ হিসাবে এটি মুদ্রণ করতে পারেন। অথবা, আপনি কেবল সংখ্যার চিহ্নগুলি ক্রমভাবে মুদ্রণ করতে পারেন। অন্যথায়, আপনি '0 এবং' 1 ক্রমানুসারে মুদ্রণ করতে পারেন, যেখানে '0' নেতিবাচক চিহ্ন প্রদর্শন করবে এবং '1' ইতিবাচক চিহ্ন (বা বিপরীতে) প্রদর্শন করবে।

উদাহরণস্বরূপ, আপনি ব্যবহার করে 1 + 2-3 = 0 উপস্থাপন করতে পারেন:

1+2-3=0
1+2-3
[1,2,-3]
++-
110
001    

তবে, আমি সরলতার জন্য প্রথম তিনটি বিন্যাসের যে কোনওটি ব্যবহার করার পরামর্শ দেব would আপনি সমস্ত ইনপুটকে বৈধ বলে ধরে নিতে পারেন।


উদাহরণ

7 ->

 1+2-3+4-5-6+7=0
 1+2-3-4+5+6-7=0
 1-2+3+4-5+6-7=0
 1-2-3-4-5+6+7=0
-1+2+3+4+5-6-7=0
-1+2-3-4+5-6+7=0
-1-2+3+4-5-6+7=0
-1-2+3-4+5+6-7=0

4 ->

 1-2-3+4=0
-1+2+3-4=0

2 -> -

8 ->

 1+2+3+4-5-6-7+8=0
 1+2+3-4+5-6+7-8=0
 1+2-3+4+5+6-7-8=0
 1+2-3-4-5-6+7+8=0
 1-2+3-4-5+6-7+8=0
 1-2-3+4+5-6-7+8=0
 1-2-3+4-5+6+7-8=0
-1+2+3-4+5-6-7+8=0
-1+2+3-4-5+6+7-8=0
-1+2-3+4+5-6+7-8=0
-1-2+3+4+5+6-7-8=0
-1-2+3-4-5-6+7+8=0
-1-2-3+4-5+6-7+8=0
-1-2-3-4+5+6+7-8=0

স্কোরিং

এটি , তাই সংক্ষিপ্ততম কোডটি জয়ী!


দয়া করে নোট করুন যে এটি কোডগল্ফ.স্ট্যাকেক্সেঞ্জার.কমসেশনস / 8655 / এর কোনও ধাপ নয় , কারণ এই চ্যালেঞ্জটি কেবল এনপুট হিসাবে নেওয়া এবং সমস্ত নম্বর 1-n ক্রমানুসারে ব্যবহার করা।
মণীশ কুন্ডু

আমরা +হিসাবে Nএবং -হিসাবে প্রতিনিধিত্ব করতে পারি -N, বা এটি খুব বেশি দূরে নিয়ে যাচ্ছে? (যেমন 3->[[-3,-3,3], [3,3,-3]] )
জোনাথন অ্যালান

@ জোনাথন অ্যালান কি আউটপুট ফর্ম্যাটগুলির তালিকায় এটি উল্লেখ করা হয়নি? নাকি আমি আপনার প্রশ্নের ভুল ব্যাখ্যা করেছি?
মনীষ কুন্ডু

আমার অর্থ 01বিকল্পের মতো তবে ব্যবহার Nএবং -N(উপরে আমার সম্পাদনা দেখুন)
জনাথন অ্যালান

2
@ জোনাথান অ্যালান হ্যাঁ অবশ্যই তা অনুমোদিত। উত্তরে আপনি উল্লেখ করেছেন তা নিশ্চিত করুন।
মনিশ কুন্ডু

উত্তর:



5

জেলি , 9 বাইট

1,-ṗ×RSÐḟ

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

মেপুঃ

1,-ṗ×RSÐḟ  Main link. Input = n. Assume n=2.
1,-        Literal list [1, -1].
   ṗ       Cartesian power n. Get [[1, 1], [1, -1], [-1, 1], [-1, -1]]
    ×R     Multiply (each list) by Range 1..n.
       Ðḟ  ilter out lists with truthy (nonzero)
      S      Sum.

জেলি , 9 বাইট

জোনাথন অ্যালানের পরামর্শ, লক্ষণগুলির একটি তালিকা আউটপুট করুন।

1,-ṗæ.ÐḟR

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


1
কীভাবে (আব?) ল্যাক আউটপুট ফর্ম্যাটটি ব্যবহার করে ,Nṗæ.ÐḟR?
জোনাথন অ্যালান

বা বিকল্পভাবে, এই আউটপুট আউটপুট দ্বারা গুণিত n
ব্যবহারকারী 202729

Nএবং -Nআউটপুট আমি প্রস্তাবিত অনুমতি দেওয়া হয়েছে তাই যে এক বাইট :) (ঠিক উত্তরে বিন্যাস উল্লেখ করতে প্রয়োজন) সংরক্ষণ করে
জনাথন অ্যালান

5

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

f=lambda n,*l:f(n-1,n,*l)+f(n-1,-n,*l)if n else[l]*(sum(l)==0)

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

মিঃ এক্সকডার তারকৃত যুক্তিগুলির একটি নিফটি ব্যবহারের মাধ্যমে 4 বাইট সংরক্ষণ করেছেন।


1
এর*l পরিবর্তে 62 বাইট ব্যবহার করছেl=[]
মিঃ এক্সকোডার

3

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

perl -E 'map eval||say,glob join"{+,-}",0..<>' <<< 7

সুন্দরভাবে সম্পন্ন. আপনি ড্রপ করতে পারেন -nএবং <<<যদি আপনি এর সাথে প্রতিস্থাপন $_করেন pop। এটি আসলে আপনার স্কোরকে উন্নতি করে না, তবে এটি সামগ্রিক প্রকাশকে সংক্ষিপ্ত করে তোলে;)
ক্রিস



2

তুষ , 10 বাইট

fo¬ΣΠmSe_ḣ

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

ব্যাখ্যা

খুব জটিল নয়।

fo¬ΣΠmSe_ḣ  Implicit input, say n=4
         ḣ  Range: [1,2,3,4]
     m      Map over the range:
      Se     pair element with
        _    its negation.
            Result: [[1,-1],[2,-2],[3,-3],[4,-4]]
    Π       Cartesian product: [[1,2,3,4],[1,2,3,-4],..,[-1,-2,-3,-4]]
f           Keep those
   Σ        whose sum
 o¬         is falsy (equals 0): [[-1,2,3,-4],[1,-2,-3,4]]


1

সুইফট , 116 বাইট

func f(n:Int){var r=[[Int]()]
for i in 1...n{r=r.flatMap{[$0+[i],$0+[-i]]}}
print(r.filter{$0.reduce(0){$0+$1}==0})}

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

ব্যাখ্যা

func f(n:Int){
  var r=[[Int]()]                         // Initialize r with [[]]
                                          // (list with one empty list)
  for i in 1...n{                         // For i from 1 to n:
    r=r.flatMap{[$0+[i],$0+[-i]]}         //   Replace every list in r with the list
  }                                       //   prepended with i and prepended with -i
  print(r.filter{$0.reduce(0){$0+$1}==0}) // Print all lists in r that sums to 0
}






1

পাইথন 3 + নম্পি, 104 103 বাইট

import itertools as I,numpy as P
lambda N:[r for r in I.product(*[[-1,1]]*N)if sum(P.arange(N)*r+r)==0]

আউটপুটটি [-1, 1] চিহ্নের সাথে সম্পর্কিত।


আপনি if-1 বাইট
ovs

0

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

@ নীলের পরামর্শ অনুসারে কে থেকে মুক্তি পেয়ে 8 বাইট সংরক্ষণ করা হয়েছে

সতর্কতা সহ সমস্ত সমাধান মুদ্রণ ()

f=(n,o='')=>n?f(n-1,o+'+'+n)&f(n-1,o+'-'+n):eval(o)||alert(o)

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

ব্যবহারকারী-বন্ধুত্বের জন্য সতর্কতার পরিবর্তে () কনসোল.লগ () ব্যবহার করা ।


আপনার কি দরকার k? এরকম কিছু:f=(n,o='')=>n?['+','-'].map(c=>f(n-1,c+n+o)):eval(o)||alert(o)
নিল

@ নীল আমি সত্যিই না ... ধন্যবাদ
আর্নৌল্ড

0

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

.+
*
_
=_$`
+0`=
-$%"+
(-(_)+|\+(_)+)+
$&=$#2=$#3=
G`(=.+)\1=
=.*

_+
$.&

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

.+
*

ইনপুটটি আনারিতে রূপান্তর করুন।

_
=_$`

সংখ্যাটিকে =পূর্বনির্ধারিত সংখ্যার তালিকায় রূপান্তর করুন ।

+0`=
-$%"+

=উভয়কে পরিবর্তে প্রতিটি প্রতিস্থাপন করুন -এবং +প্রতিবার লাইন সংখ্যা নকল করে।

(-(_)+|\+(_)+)+
$&=$#2=$#3=

পৃথকভাবে s এবং s _এর পরে -s এর সংখ্যা গণনা করুন +। এটি নেতিবাচক এবং ধনাত্মক সংখ্যার যোগফল।

G`(=.+)\1=

কেবলমাত্র সেই লাইনগুলি রাখুন যেখানে -গুলি এবং +গুলি বাতিল হয়।

=.*

গণনাগুলি মুছুন।

_+
$.&

দশমিক রূপান্তর করুন।


0

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

{grep *.sum==0,[X] (1..$_ X*1,-1).rotor(2)}

এটি চেষ্টা করে
তালিকার ক্রম ফিরে আসে

সম্প্রসারিত:

{  # bare block lambda with implicit parameter 「$_」

  grep              # only return the ones
    *.sum == 0,     # that sum to zero

    [X]             # reduce with cross meta operator

      (
          1 .. $_   # Range from 1 to the input

        X*          # cross multiplied by

          1, -1

      ).rotor(2)    # take 2 at a time (positive and negative)
}

1..$_ X* 1,-1(1, -1, 2, -2)
(…).rotor(2)((1, -1), (2, -2))
[X] …((1, 2), (1, -2), (-1, 2), (-1, -2))


0

জে , 35 30 বাইট

-5 বাইট ধন্যবাদ ফ্রাউনফ্রোগের জন্য!

>:@i.(]#~0=1#.*"1)_1^2#:@i.@^]

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

মূল:

জে , 35 বাইট

[:(#~0=+/"1)>:@i.*"1(_1^[:#:@i.2^])

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

আমি সহগের 1 / -1 এর সমস্ত সম্ভাব্য তালিকার সাথে তালিকাটি 1..n কে গুণ করি এবং শূন্য পর্যন্ত যুক্ত হওয়াগুলি সন্ধান করি।

                    (             ) - the list of coefficients
                             i.     - list 0 to 
                               2^]  - 2 to the power of the input
                     _1^[:          - -1 to the power of 
                          #:@       - each binary digit of each number in 0..n-1 to 
                 *"1                - each row multiplied by
            >:@i.                   - list 1..n
  (#~      )                        - copy those rows
     0=+/"1                         - that add up to 0
[:                                  - compose   

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

বিকল্প হিসাবে আমি +/- এর কার্টেসিয়ান পণ্য ব্যবহার করে, একটি স্পষ্ট ক্রিয়া চেষ্টা করেছিলাম:

জে , 37 বাইট

3 :'(#~0=+/"1)(-y)]\;{(<"1@,.-)1+i.y'

{(<"1@,.-) উদাহরণস্বরূপ কার্টেসিয়ান পণ্যগুলি আবিষ্কার করে:

{(<"1@,.-) 1 2 3
┌───────┬────────┐
│1 2 3  │1 2 _3  │
├───────┼────────┤
│1 _2 3 │1 _2 _3 │
└───────┴────────┘

┌───────┬────────┐
│_1 2 3 │_1 2 _3 │
├───────┼────────┤
│_1 _2 3│_1 _2 _3│
└───────┴────────┘

এটির ফলাফলটি খুব খারাপ যে এটির বাক্স, তাই আমি মানগুলি আনবক্স করতে কিছু বাইট ব্যয় করেছি

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


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