একটি গল্ফ কোর্সে গাছ লাগান!


10

এই চ্যালেঞ্জটি এই অ্যাপ্লিকেশন দ্বারা অনুপ্রাণিত ।


এটি এই চ্যালেঞ্জের অনেক সহজ সংস্করণ । এই চ্যালেঞ্জটি , অন্যটি


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

ইনপুটটি দেখতে দেখতে ((চ্ছিক ইনপুট ফর্ম্যাট):

aabbbb
aabbbb
aaccbb
acccdb
ecccdb
eeefff

বা, কল্পনা করা সহজ:

এখানে চিত্র বর্ণনা লিখুন

চ্যালেঞ্জ:

আপনি স্থাপন করতে হয় 6 নিম্নলিখিত নিয়ম অনুযায়ী, এই পার্কে গাছ:

  • কলামে ঠিক 1 টি গাছ এবং সারি প্রতি 1 টি গাছ থাকবে
  • সমস্ত অঞ্চলে ঠিক 1 টি গাছ থাকবে।
  • কোনও গাছ উলম্বভাবে, অনুভূমিকভাবে বা ত্রিভুজভাবে অন্য গাছের সংলগ্ন হতে পারে না

উপরের লেআউটটির সমাধানটি হ'ল:

এখানে চিত্র বর্ণনা লিখুন

দ্রষ্টব্য: প্রতিটি ধাঁধাটির একটিমাত্র সমাধান রয়েছে

অতিরিক্ত নিয়ম:

  • ইনপুট এবং আউটপুট ফর্ম্যাটগুলি alচ্ছিক
    • উদাহরণস্বরূপ আউটপুট সূচকগুলির তালিকা হতে পারে, 1/0 সমেত একটি গ্রিড নির্দেশ করে যে সেই অবস্থানে কোনও গাছ আছে কিনা বা গাছগুলি নির্দেশিত ইনপুটটির পরিবর্তিত সংস্করণ রয়েছে
  • ফাঁসির সময়টি অবশ্যই নির্দোষ হতে হবে
  • একটি যুক্তিসঙ্গত আধুনিক ল্যাপটপে প্রোগ্রামটি 1 মিনিটের মধ্যে শেষ করতে হবে
  • ব্রুনি পয়েন্ট না বললে বলছেন!

পরীক্ষার কেস:

aabbbb
aabbbb
aaccbb
acccdb
ecccdb
eeefff
---
aAbbbb
aabbbB
aaCcbb
acccDb
Ecccdb
eeeFff
----------
aabccc
aacccc
aaddce
aeeeee
aeeefe
eeeeee
---
aaBccc
aacccC
aadDce
Aeeeee
aeeeFe
eEeeee
----------
aaaabb
aacbbb
aadddb
addeef
ddddee
dddeee
---
aaaaBb
aaCbbb
Aadddb
addeeF
dDddee
dddEee
----------
abbbcd
abebcd
addddd
dddddd
effdff
eeffff
---
abBbcd
abebCd
Addddd
dddDdd
effdfF
eEffff

বিন্যাসে কিছুটা সহজ যে বিন্যাসে একই পরীক্ষার কেস:

Test case 1:
[1,1,2,2,2,2;1,1,2,2,2,2;1,1,3,3,2,2;1,3,3,3,4,2;5,3,3,3,4,2;5,5,5,6,6,6]
Test case 2:
[1,1,2,3,3,3;1,1,3,3,3,3;1,1,4,4,3,5;1,5,5,5,5,5;1,5,5,5,6,5;5,5,5,5,5,5]
Test case 3:
[1,1,1,1,2,2;1,1,3,2,2,2;1,1,4,4,4,2;1,4,4,5,5,6;4,4,4,4,5,5;4,4,4,5,5,5]
Test case 4:
[1,2,2,2,3,4;1,2,5,2,3,4;1,4,4,4,4,4;4,4,4,4,4,4;5,6,6,4,6,6;5,5,6,6,6,6]

সুডোকু সলভারের মতো শোনাচ্ছে তবে আলাদা।
জুনিয়ররুবিস্ট

উত্তর:


2

সি, 223 182 বাইট

O[15],U;main(y,v)char**v;{if(y>7)for(;y-->2;printf("%06o\n",O[y]));else for(int*r,x=1,X=8;X<14;U&x|*r|O[10-y]*9&x*9?0:(U^=O[9-y]=*r=x,*r=main(y+1,v),U^=x),x*=8)r=O+v[1][y*7-++X]-88;}

প্রশ্নে প্রদত্ত বিন্যাসে আর্গুমেন্ট হিসাবে ইনপুট নেয়। গাছগুলি যেদিকে যায় সেখানে 1s এর 0s এর গ্রিড হিসাবে আউটপুট লিখুন।

./TreesMin 'aabbbb
aabbbb
aaccbb
acccdb
ecccdb
eeefff'

নমুনা আউটপুট:

010000
000001
001000
000010
100000
000100

ভাঙ্গন

O[15],                                  // Tree positions & region usage
U;                                      // Column usage (bitmask)
main(y,v)char**v;{                      // Recursive main function
  if(y>7)                               // Finished grid?
    for(;y-->2;printf("%06o\n",O[y]));  //  Print it (rows are padded octal)
  else                                  // Not finished:
    for(int*r,x=1,X=8;X<14;             //  Loop over columns
      U&x|*r|O[10-y]*9&x*9              //   Current cell violates rules?
        ?0                              //    Do nothing
        :(U^=O[9-y]=*r=x,               //   Else: mark cell
          *r=main(y+1,v),               //    Recurse
          U^=x)                         //    Unmark cell
      ,x*=8)                            //   Advance to next column
      r=O+v[1][y*7-++X]-88;             //   Region pointer for current iteration
}

এটি এই প্রশ্নের দ্রুততম কোড সংস্করণে আমার উত্তরটির অভিযোজন । খুব বেশি সংক্ষিপ্ত সার্কিট নেই, তবে এটি 6x6 গ্রিডের জন্য পর্যাপ্ত পরিমাণে দ্রুত যথেষ্ট।


1

ক্লিংগো , 66 বাইট

1{t(X,Y):c(X,Y,Z)}:-Z=1..n.:-t(X,Y),2{t(X,J;I,Y;X-1..X+1,Y..Y+1)}.

গ্রিডের আকার clingo plant.lp - -c n=<n>যেখানে <n>রয়েছে তার সাথে চালান । ইনপুট ফর্ম্যাট একটি তালিকা রয়েছে c(X,Y,Z).(প্রতিটি কক্ষের জন্য বিবৃতি X, Y) রঙ্গিন Z, সঙ্গে 1 ≤ X, Y, Zn, ঐচ্ছিক হোয়াইটস্পেস দ্বারা পৃথক। আউটপুট t(X,Y)প্রতিটি গাছের জন্য ( X, Y) এ অন্তর্ভুক্ত ।

ডেমো

$ clingo plant.lp - -c n=6 <<EOF
> c(1,1,1). c(2,1,1). c(3,1,2). c(4,1,2). c(5,1,2). c(6,1,2).
> c(1,2,1). c(2,2,1). c(3,2,2). c(4,2,2). c(5,2,2). c(6,2,2).
> c(1,3,1). c(2,3,1). c(3,3,3). c(4,3,3). c(5,3,2). c(6,3,2).
> c(1,4,1). c(2,4,3). c(3,4,3). c(4,4,3). c(5,4,4). c(6,4,2).
> c(1,5,5). c(2,5,3). c(3,5,3). c(4,5,3). c(5,5,4). c(6,5,2).
> c(1,6,5). c(2,6,5). c(3,6,5). c(4,6,6). c(5,6,6). c(6,6,6).
> EOF
clingo version 5.1.0
Reading from plant.lp ...
Solving...
Answer: 1
c(1,1,1) c(2,1,1) c(3,1,2) c(4,1,2) c(5,1,2) c(6,1,2) c(1,2,1) c(2,2,1) c(3,2,2) c(4,2,2) c(5,2,2) c(6,2,2) c(1,3,1) c(2,3,1) c(3,3,3) c(4,3,3) c(5,3,2) c(6,3,2) c(1,4,1) c(2,4,3) c(3,4,3) c(4,4,3) c(5,4,4) c(6,4,2) c(1,5,5) c(2,5,3) c(3,5,3) c(4,5,3) c(5,5,4) c(6,5,2) c(1,6,5) c(2,6,5) c(3,6,5) c(4,6,6) c(5,6,6) c(6,6,6) t(1,5) t(2,1) t(6,2) t(3,3) t(5,4) t(4,6)
SATISFIABLE

Models       : 1+
Calls        : 1
Time         : 0.045s (Solving: 0.00s 1st Model: 0.00s Unsat: 0.00s)
CPU Time     : 0.000s

ইনপুট / আউটপুট ফর্ম্যাটটিকে আরও সহজ করতে, পাইথন প্রোগ্রামগুলি চ্যালেঞ্জের দেওয়া বিন্যাস থেকে এবং রূপান্তর করতে এখানে are

ইনপুট

import sys
print(' '.join("c({},{},{}).".format(x + 1, y + 1, ord(cell) - ord('a') + 1) for y, row in enumerate(sys.stdin.read().splitlines()) for x, cell in enumerate(row)))

আউটপুট

import re
import sys
for line in sys.stdin:
    c = {(int(x), int(y)): int(z) for x, y, z in re.findall(r'\bc\((\d+),(\d+),(\d+)\)', line)}
    if c:
        t = {(int(x), int(y)) for x, y in re.findall(r'\bt\((\d+),(\d+)\)', line)}
        n, n = max(c)
        for y in range(1, n + 1):
            print(''.join(chr(ord('aA'[(x, y) in t]) + c[x, y] - 1) for x in range(1, n + 1)))
        print()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.