100 টির বেশি সংযোজন সমন্বয়গুলি আঁকুন


13

প্রতিটি কোণায় আপনার একক ডিজিট নম্বর সহ একটি বাক্স রয়েছে:

1|2
---
3|4

বাম থেকে ডানে সারি বরাবর সংখ্যার সাথে সংযোগ দেওয়া হলে আমরা 12 এবং 34 পাই we আমরা যদি শীর্ষগুলি নীচে কলাম বরাবর অঙ্কগুলি সংযুক্ত করি তবে আমরা 13 এবং 24 পেয়ে যাব we যদি আমরা এই সমস্ত সংখ্যার যোগ করি তবে আমরা 12 + 34 + 13 + পাই 24 = 83।

চ্যালেঞ্জ

এই জাতীয় সমস্ত বাক্স মুদ্রণের জন্য একটি প্রোগ্রাম লিখুন যেখানে উপরের হিসাবে গণনা করা সমষ্টি 100 এর সমান।

ধরে নেওয়া যায় যে প্রতিটি কোণে 1 এবং 9 এর মধ্যে একটি একক সংখ্যা রয়েছে, এখানে 9 টি সংমিশ্রণ রয়েছে: 1157, 1247, 1337, 1427, 1517, 2138, 2228, 2318, এবং 3119. (দ্রষ্টব্য যে আমরা 0 টি অন্তর্ভুক্ত করলে 25 টি সংমিশ্রণ রয়েছে তবে তবে আমরা এই চ্যালেঞ্জের জন্য নই।)

মনে রাখবেন যে 1234 উদাহরণটি 12 + 34 + 13 + 24 এর সমান 100 এর সাথে কাজ করে না।

ইনপুট

না

আউটপুট

নিম্নলিখিত বিন্যাসে উত্তর বাক্স:

A|B
---
C|D

আউটপুট STDOUT বা নিকটতম বিকল্পে মুদ্রিত করা উচিত।

বিধি

  • এবি + সিডি + এসি + বিডি = 100
  • প্রতিটি কোণে ইতিবাচক পূর্ণসংখ্যা কেবল 1-9 থাকবে।
  • 0 বাদ দেওয়া হয়েছে।
  • নম্বরগুলি একাধিকবার ব্যবহার করা যেতে পারে।
  • উপরের মত আপনার বাক্সগুলি আঁকতে হবে। ( A|B\n---\nC|D\n)
  • আপনাকে সমস্ত বৈধ উত্তর আউটপুট করতে হবে।
  • একটি অতিরিক্ত ট্রেলিং নিউলাইন ঠিক আছে।
  • , তাই বাইট জেতে সংক্ষিপ্ততম কোড।
  • স্ট্যান্ডার্ড লুফোলস এবং টি অ্যান্ড সি প্রয়োগ হয়।

এটি আমার প্রথম জমা, সুতরাং আমার যদি কিছু পরিষ্কার করার দরকার হয় তবে দয়া করে আমাকে জানান।


আউটপুট হওয়ার কথা কি আপনি তা দেখাতে পারেন? এছাড়াও, একটি ট্রিলিং নিউলাইন চরিত্র সম্পর্কে কী?
স্পিক্যাট্রিক্স

দুর্দান্ত চ্যালেঞ্জ। আমার মনে হয় আপনাকে কোন সংখ্যা যুক্ত করতে হবে তা স্পষ্ট করে বলতে হবে। "দুটি, সংক্ষিপ্ত, দুটি অঙ্কের প্লাস জুড়ে দুটি, দুটি অঙ্কের সংখ্যা নীচে 100 এর সমান হতে হবে" "রেখাটি" যথেষ্ট পরিষ্কার নয়। আমি কেবল 1234 এর উদাহরণ ব্যবহার করে বের করেছি Also এছাড়াও, আমি কেবল 9 টি সংমিশ্রণ পাচ্ছি। আপনি দয়া করে 16 টি সংমিশ্রণের কথা উল্লেখ করতে পারেন?
অপ্টিমাইজার

1
ব্যাখ্যা এবং বিন্যাসে আমি কয়েকটি সম্পাদনা করেছি। যদি এটি আপনার মূল উদ্দেশ্যটির সাথে মেলে না, দয়া করে সম্পাদনাটি আবার রোল করুন।
অ্যালেক্স এ।

1
@ ডেনহামকোট আসলে, আমার আধা-হার্ডকোডযুক্ত সমাধানটি করা বেশ আকর্ষণীয় ছিল, কারণ এটি কেবল আধা-হার্ডকোডযুক্ত। এটি নিয়মের ব্যতিক্রম ছিল, কারণ যেখানে প্রশ্নবাজি হার্ডকোডিং সেরা / সবচেয়ে সুস্পষ্ট বিকল্পটি প্রায়শই আকর্ষণীয় উত্তর দেয় না (উদাহরণস্বরূপ সাম্প্রতিক বোরোমিয়ান রিংয়ের প্রশ্নটি দেখুন।) প্রশ্নের জন্য আপনাকে ধন্যবাদ।
স্তরের নদী সেন্ট

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

উত্তর:


8

পাইথ, 42 38 34 বাইট

V ^ ST4IqC \ ds * VNsM ^, T1 2Xj \ | N3 "
---

কোডের পিছনে থাকা নতুন লাইনটি গুরুত্বপূর্ণ। প্রধান কারণ আমি প্রতিযোগিতামূলক কারণ আমি এর ভেক্টর ডট পণ্য ব্যবহার হয় [1, 1, 5, 7]এবং [20, 11, 11, 2]এবং 100 এটি তুলনা।


"|"-> \|, \n-> (আক্ষরিক লাইনফিড) এবং আপনার চূড়ান্ত উক্তিটির প্রয়োজন নেই।
ডেনিস

@Dennis ঘুমন্ত ছিল> <।
orlp

2
যদি আপনি কিছু মনে করেন না, আপনি দয়া করে তাদের (আমার মতো) যারা আপনার অবিশ্বাস্যভাবে সংক্ষিপ্ত উত্তরটি ব্যাখ্যা করতে পারেন না তাদের জন্য একটি ব্যাখ্যা যুক্ত করতে পারেন?
ডেনহাম কোট

6

রুবি, 71

যেহেতু হার্ডকোডিং অনুমোদিত নয় (এবং কোনও ক্ষেত্রে এটির লাইন আঁকানো কঠিন) এখানে একটি আংশিক হার্ডকোড উত্তর রয়েছে।

1.upto(3){|i|1.upto(7-i*2){|j|print i,?|,j,'
---
',8-j-2*i,?|,i+6,'
'}}

ব্যাখ্যা

সমাধানের সূত্রটি নিম্নরূপ:

A*20+(B+C)*11+D*2=100

মডুলার গাণিতিক যুক্তি দ্বারা, আমরা দেখতে পাই যে A এবং D অবশ্যই একটি ধ্রুবক পরিমাণের দ্বারা পৃথক হওয়া উচিত, যেমন (A*20+D*2)%11ধ্রুবক। আসলে ডি = এ + 6। iউ: তিনটি সম্ভাব্য মান মাধ্যেমে লুপ iterates

বি এর মান 1 থেকে কিছু হতে পারে 7-i*2এবং বি এবং সি এর মোট হতে হবে 14-A-D। সুতরাং আমরা নিম্নলিখিত এক্সপ্রেশন প্রাপ্ত, যা মুদ্রিত হয়। রুবি অভ্যন্তরীণ স্ট্রিংগুলিতে আক্ষরিক নতুন লাইনের অনুমতি দেয়''

   i     |    j
------------------
8-j-2*i  |   i+6

4

জাভা, 202 200 198

প্রথমবারের জন্য চেষ্টা করছেন: ডি

সম্পাদনা: অন্য একটি মন্তব্যে সামান্য ছোট গণনার সাথে 2 বাইট সংরক্ষণ করা হয়েছে।

class C{public static void main(String[]c){for(int i=0;++i<5;)for(int j=0;++j<7;)for(int k=0;++k<10;)for(int l=0;++l<10;)if(20*i+11*(j+k)+2*l==100)System.out.printf("%s|%s%n---%n%s|%s%n",i,j,k,l);}}

4

ব্যাচ - 187 বাইট

পাশবিক বল.

@!! 2>nul||cmd/q/v/c%0&&exit/b
set y=for /l &set z= in (1,1,9)do 
%y%%%a%z%%y%%%b%z%%y%%%c%z%%y%%%d%z%set/aa=%%a%%b+%%c%%d+%%a%%c+%%b%%d&if !a!==100 echo %%a^|%%b&echo ---&echo %%c^|%%d

অ-গল্ফ করা এটি কিছুটা কম বিরক্তিকর:

@echo off
setLocal enableDelayedExpansion
for /l %%a in (1,1,9) do (
    for /l %%b in (1,1,9) do (
        for /l %%c in (1,1,9) do (
            for /l %%d in (1,1,9) do (
                set/aa=%%a%%b+%%c%%d+%%a%%c+%%b%%d
                if !a!==100 (
                    echo %%a^|%%b
                    echo ---
                    echo %%c^|%%d
                )
            )
        )
    )
)

3

সিজেম, 40 বাইট

A4m*{[KBBY].*:+56=},{:)2/'|f*"
---
"*N}/

সংমিশ্রণগুলি সন্ধানের জন্য কৌশলটি @ অপ্টিমাইজারের থেকে পৃথক, তবে সেগুলি মুদ্রণের জন্য কোডটি অভিন্ন।

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

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

A4m*     e# Push all vectors of length 4 with coordinates in [0 ... 9].
         e# We'd normally use [0 ... 8] here, but "9 4m*" is 1 byte longer and
         e# "A4m*" doesn't produce any false positives.

{        e# Filter the vectors:
[KBBY].* e#   Multiply the elements of the vector by 20, 11, 11 and 2.
:+       e#   Add all four products.
56=      e#   Check if the sum is 56. 56 is used instead of 100 since all elements
         e#   of the vector will be incremented and 56 + 20 + 11 + 11 + 2 == 100.
},       e# Keep only vectors for which = pushed a truthy value.

{        e# For each vector:
:)       e#   Increment each coordinate.
2/       e#   Split into pair.
'|f*     e#   Join each pair, delimiting by '|'.
"
---
"*       e#   Join the two pairs, delimiting by "\n---\n".
N        e#   Push "\n".
}/       e#

যেহেতু আমি কিছু জাভা থেকে খুব অল্পই জানি, আমি যদি আপনি ইচ্ছুক হন তবে এটি কীভাবে কাজ করে তার একটি ব্যাখ্যা পছন্দ করব ..?
ডেনহাম কোট

এটি একটি দুর্দান্ত কৌশল।
অপ্টিমাইজার

কি দারুন. আমি অনেক কিছু শেখার আছে। ব্যাখ্যার জন্য ধন্যবাদ :)
ডেনহাম কোট

3

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

s=show
r=[1..9]
v=putStr$unlines[s a++"|"++s b++"\n---\n"++s c++"|"++s d++"\n"|a<-r,b<-r,c<-r,d<-r,(2*a+b+c)*10+b+2*d+c==100]

আমার প্রথম হাস্কেল প্রোগ্রামের দ্বিতীয় সংস্করণ!

এবার প্রয়োজন অনুসারে প্রদর্শনের সাথে নির্লজ্জভাবে চুরি করা নিমির থেকে অভিযোজিত (ভাল করে আমি কিছু গবেষণা করেছি তবে মনে হয় হাস্কেলের চরিত্রগুলি প্রদর্শনের পক্ষে এমন কার্যকর উপায় নেই যাতে পুটস্রিট-অনলাইনগুলি এড়ানো কঠিন)।

এবং ... শেষে সূত্রের অনুক্রম বাদে এটি এখনও পঠনযোগ্য =)


3

হাস্কেল, 125 121 বাইট

s=show
f=putStr$unlines[s a++'|':s b++"\n---\n"++s c++'|':s d|[a,b,c,d]<-mapM id$"abcd">>[[1..9]],20*a+11*(b+c)+2*d==100]

ব্যবহার:

*Main> f
1|1
---
5|7
1|2
---
4|7
1|3
---
3|7
1|4
---
2|7
1|5
---
1|7
2|1
---
3|8
2|2
---
2|8
2|3
---
1|8
3|1
---
1|9

>>ইন "abcd">>[[1..9]]দ্বিতীয় উপাদানটির 4 টি (1 ম প্যারামিটার দৈর্ঘ্যের) অনুলিপি সহ একটি তালিকা তৈরি করে [[1..9],[1..9],[1..9],[1..9]]mapM idউহার সব সমন্বয়, অর্থাত্ একটি তালিকা তোলে [0,0,0,0]করতে [9,9,9,9]। তাদের যোগফলগুলি রাখুন 100এবং এর বাক্সটি দিয়ে একটি স্ট্রিং তৈরি করুন। সমস্ত বাক্স মুদ্রণ করুন।

ধন্যবাদ 1 মউরিসকে 1 বাইটের জন্য এবং আমাকে আরও 3 টি সন্ধানের জন্য আমার পোস্টটি পর্যালোচনা করাতে


mapM idএকটি বাইট বনাম সংরক্ষণ করে sequence
লিন

2

পাইথন 2, 145 129 বাইট

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

i=int
for k in range(1000,9999):
 a,b,c,d=`k`
 if i(a+b)+i(c+d)+i(a+c)+i(b+d)==100and not'0'in`k`:print a+'|'+b+'\n---\n'+c+'|'+d

2

সিজেম, 43 42 বাইট

A,1>4m*{2/_z+Afb:+100=},{2/'|f*"
---
"*N}/

অনুসরণ করার ব্যাখ্যা .. আজ EOD এর মাধ্যমে

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


আমার গল্ফড জাভা সংস্করণ (যা বাক্সগুলির সাথে বিরক্ত করে না, এটি কেবল ক্রমগুলি তালিকাবদ্ধ করে) ছিল 197 টি অক্ষর। দৈর্ঘ্যের এক চতুর্থাংশে এটি সব ঘটে! দুর্দান্ত :)
ডেনহাম কোট

@ ডেনহামকোট এটি প্রতিটি সিজেম, পাইথ এবং গল্ফস্ক্রিপ্টের উত্তর।
ফেজ

এখনও সেই ব্যাখ্যাটির অপেক্ষায় ;-)
ডেনহাম কোট


1

আর, 165 বাইট

e=expand.grid(d<-1:9,d,d,d)
a=apply
o=a(e[a(e,1,function(x)20*x[1]+11*(x[2]+x[3])+2*x[4]==100),],1,function(x)cat(x[1],"|",x[2],"\n---\n",x[3],"|",x[4],"\n",sep=""))

আমি যদি কোনওভাবে আউটপুটটিকে হার্ড-কোড করতে পছন্দ করি তবে এটি উল্লেখযোগ্যভাবে সংক্ষিপ্ত হত। কয়েকটি অন্যান্য সমাধানের মতো, এটি 20 x 1 + 11 ( x 2 + x 3 ) + 2 x 4 = 100 পরিচয়টি গ্রহণ করবে ।

অবহেলিত + ব্যাখ্যা:

# Create a matrix where each row is a combination of the digits 1-9
e <- expand.grid(1:9, 1:9, 1:9, 1:9)

# Filter the rows of the matrix using the aforementioned identity
e <- e[apply(e, 1, function(x) 20*x[1] + 11*(x[2]+x[3]) + 2*x[4] == 100), ]

# Print each row formatted into boxes
o <- apply(e, 1, function(x) cat(x[1], "|", x[2], "\n---\n", x[3], "|", x[4], sep = ""))

আপনি ভাবতে পারেন কেন শেষ বিবৃতিটি একটি অ্যাসাইনমেন্ট। এটি সক্রিয় হিসাবে, catফাংশন, যা একত্রিত করে এবং প্রিন্ট করে, এর মান দেয় NULL। যখন আপনি catযেমন কোনও ফাংশন থেকে কল করবেন তখন applyআউটপুট অনুসরণ করবে NULLযা অনাকাঙ্ক্ষিত। এর চারপাশে দুটি উপায় রয়েছে: এটিকে কোনও ভেরিয়েবলের জন্য বরাদ্দ করুন বা এটিকে মোড়ানো করুন invisible। এখানে আমি প্রাক্তনকে বেছে নিয়েছি কারণ এটি উল্লেখযোগ্যভাবে খাটো।

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


1

জাভা, 450

আমার প্রথম (অবারিত) প্রয়াসটি এরকম দেখাচ্ছে:

ক্লাস বি {
  পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] এ) {
    (অন্তর্নিহিত i = 1; i <10; i ++) এর জন্য
      এর জন্য (int j = 1; j <10; j ++)
        (ইনট কে = 1; কে <10; কে ++) এর জন্য
          এর জন্য (অন্তর্গত l = 1; l <10; l ++)
            যদি (Integer.parseInt (আমি + "" + J) + + Integer.parseInt (ট + + "" + L) + + Integer.parseInt (আমি + "" + K) + + Integer.parseInt (ঞ + + "" + L) == 100) {
              System.out.println (আমি + "|" + J);
              System.out.println ( "---");
              System.out.println (ট + + "|" + L + '\ N ");
            }
  }
}


3
ইঙ্গিত: 20*a + 11*(b + c) + 2*d == 100
orlp

হ্যাঁ, এই সমাধানটি নিখুঁতভাবে স্ট্রিং কনটেক্সটেশন ছিল - এটি একটি অত্যন্ত নম্র প্রথম প্রচেষ্টা।
ডেনহাম কোট

1
আমি 450 নয়, কেবল 436 বাইট গণনা করছি Also এছাড়াও, শ্বেত স্পেস প্রয়োজনীয় নয়, যা আপনাকে যথেষ্ট পরিমাণে সাশ্রয় করবে।
অ্যালেক্স এ।

তদতিরিক্ত, অপ্রয়োজনীয় সাদা স্থান সরিয়ে, এটি 340 বাইটের কাছাকাছি হওয়া উচিত :)
কেড

1

পাওয়ারশেল, 98

স্টিভেররিলের সূত্রটি অভিযোজিত

:\>cat printbox.ps1

1..9|%{for($j=1;$j-lt10;$j++){if(($k=(8-$j-2*$_))-gt0){"{0}|{1}`n---`n{2}|{3}"-f$_,$j,$k,
($_+6)}}}

:\>powershell -f printbox.ps1
1|1
---
5|7
1|2
---
4|7
1|3
---
3|7
1|4
---
2|7
1|5
---
1|7
2|1
---
3|8
2|2
---
2|8
2|3
---
1|8
3|1
---
1|9
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.