একটি এএসসিআইআই কনট্যুর প্লট আঁকুন


11

নিম্নলিখিত 3x3 ব্লকটি বিবেচনা করুন যা মার্চিং স্কোয়ার অ্যালগরিদম প্রতিটি কক্ষের জন্য চিহ্নিত করতে পারে (0-ভিত্তিক লেবেলযুক্ত আইডি সহ):

0:
...
...
...

1:
...
...
\..

2:
...
...
../

3:
...
---
...

4:
..\
...
...

5:
/..
...
../

6:
.|.
.|.
.|.

7:
/..
...
...

8:
/..
...
...

9:
.|.
.|.
.|.

10:
..\
...
\..

11:
..\
...
...

12:
...
---
...

13:
...
...
../

14:
...
...
\..

15:
...
...
...

এই চ্যালেঞ্জের লক্ষ্যটিকে ব্লক আইডির একটি 2 ডি ম্যাট্রিক্স দেওয়া হয়েছে, এই ছোট কক্ষগুলি একত্রে টাইল করে সম্পূর্ণ কনট্যুর প্লটটি আঁকুন। লক্ষ্য করুন যে কয়েকটি পুনরাবৃত্তি মামলা রয়েছে (উদা: 0 এবং 15 দৃষ্টিভঙ্গি একই)

ইনপুট

আপনার প্রোগ্রাম / ফাংশনটি ইনপুট হিসাবে পরিসরের 2D আয়তক্ষেত্রাকার ম্যাট্রিক্স হিসাবে নেওয়া উচিত [0+a,15+a](যেখানে aআপনার পছন্দের একটি স্বেচ্ছাসেবীর পূর্ণসংখ্যার শিফ্ট; এটি আপনাকে ব্লকগুলির জন্য শূন্য-ভিত্তিক সূচক বা 1-ভিত্তিক সূচক ব্যবহার করতে দেয়)। এটি পছন্দসই যে কোনও উত্স হতে পারে (স্টিডিন, ফাংশন প্যারামিটার ইত্যাদি)।

আউটপুট

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

মনে রাখবেন যে ব্লকগুলির জন্য কোনও "স্যাডেল" মানচিত্রের জন্য আপনাকে কোনও ধরণের বিশেষ চিকিত্সা করতে হবে না; প্রদত্ত আইডি যেমন রয়েছে ঠিক তেমনভাবে ব্লকটি আঁকুন।

আউটপুটটি কোনও সিঙ্ক পছন্দসই হতে পারে (স্টাডাউট, রিটার্ন মান ইত্যাদি)

উদাহরণ

নীচের সমস্ত উদাহরণ 0-ভিত্তিক ব্লক আইডি ব্যবহার করে।

case 1:

2 1
4 8

......
......
../\..
..\/..
......
......

case 2:

15 13 12 14 15
13 8 0 4 14
11 1 0 2 7
15 11 3 7 15

...............
......---......
...../...\.....
.../.......\...
...............
../.........\..
..\........./..
...............
...\......./...
.....\.../.....
......---......
...............


case 3:

12 12 12 8 4
0 0 0 0 2
0 0 0 2 7
0 2 3 7 15

........./....\
---------......
...............
...............
...............
............../
............/..
...............
.........../...
........./.....
......---......
...../.........

case 4:

0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15

............
.........---
...\..../...
..\/...|./..
.......|....
...../.|....
/...|...\..\
....|.......
....|.\.....
............
---.........
...../\.....

case 5:

0 0 0 0 6 15 15
0 0 0 0 6 15 15
0 0 0 0 6 15 15
0 0 0 2 7 15 15
0 0 2 5 14 15 15
0 2 5 8 4 12 14
0 4 8 0 0 0 6
0 0 0 0 0 0 4

.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
.............|.......
............/........
.....................
.........../.........
........./...........
.....................
......../../\........
....../../....\......
...............---...
...../../.........\..
.....\/............|.
...................|.
...................|.
....................\
.....................
.....................

স্কোরিং

এটি কোড গল্ফ; বাইটস মধ্যে সংক্ষিপ্ত কোড। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।



1
শেষ পরীক্ষার ক্ষেত্রে ভার্টিকাল বারগুলির আরও 3 টি শীর্ষস্থানীয় লাইন থাকা উচিত নয়?
ডিজাইমা

হ্যাঁ, স্থির ধন্যবাদ!
helloworld922

হেক্সিডিসিমাল ইনপুট ব্যবহার করা উচিত ছিল।
ম্যাজিক অক্টোপাস উরন

উত্তর:


2

গণিত, 353 326 বাইট

s=Table[".",3,3];z=Reverse;l@0=l@15=s;y=s;y[[3,1]]="\\";l@1=l@14=y;y=s;y[[3,3]]="/";l@2=l@13=y;y=s;y[[2,All]]="-";l@3=l@12=y;y=l@4=l@11=z/@z@l@1;y[[3,1]]="\\";l@10=y;y=s;y[[All,2]]="|";l@6=l@9=y;y=l@7=l@8=z/@z@l@2;y[[3,3]]="/";l@5=y;StringReplace[ToString@Grid@Map[Column,Map[StringJoin,Map[l,#,{2}],{3}],{2}],{"\n\n"->"\n"}]&


ইনপুট

[{15, 13, 12, 14, 15}, {13, 8, 0, 4, 14}, {11, 1, 0, 2, 7}, {15, 11, 3, 7, 15} ]


চিত্তাকর্ষক, ম্যাথমেটিকায় এটি করা কঠিন।
যাদু অক্টোপাস উরন

2

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

a=>a.map((r,y)=>r.map((i,x)=>[...s='76843210_'].map((_,j)=>(o[Y=y*3+j/3|0]=o[Y]||[])[x*3+j%3]='.\\/-\\/|/\\'[[0,64,256,56,4,257,146,1,68][k=s[i-8]||i]>>j&1&&k])),o=[])&&o.map(r=>r.join``).join`
`

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


2

গণিত, 173 বাইট

StringRiffle[ArrayFlatten[ReplacePart[Table[".",16,3,3],{{2|11|15,3,1}|{5|11|12,1,3}->"\\",{3|6|14,3,3}|{6|8|9,1,1}->"/",{4|13,2,_}->"-",{7|10,_,2}->"|"}][[#]]&/@#],"\n",""]&

ওল্ফ্রাম স্যান্ডবক্সে এটি ব্যবহার করে দেখুন!

" \n" একটি আসল নিউলাইন দ্বারা প্রতিস্থাপন করা উচিত। ইনপুটটি 1-সূচকযুক্ত - উদাহরণস্বরূপ, তৃতীয় পরীক্ষার কেস হয়ে যায় {{13,13,13,9,5},{1,1,1,1,3},{1,1,1,3,8},{1,3,4,8,16}}। আউটপুট একটি স্ট্রিং।

ধারণাটি মূলত জেনি_ম্যাথির উত্তরের মতই - একটি 3x3 গ্রিড নিয়ে "."এবং কয়েকটি অক্ষর প্রতিস্থাপন করে ষোলটি স্কোয়ার তৈরি করুন , তারপরে স্কোয়ারগুলি একসাথে সেলাই করুন - তবে এটি করার জন্য সামান্য ছোট ফাংশন ব্যবহার করে। ( বিদ্যমান যে আমাকে স্মরণ করিয়ে দেওয়ার জন্য আলেফালফাকে ধন্যবাদ ArrayFlatten!)

প্রাথমিকভাবে হার্ডকোডিংয়ের পরিবর্তে বুদ্ধিমানভাবে স্কোয়ার তৈরি করে কম বাইটে এটি করা সম্ভব, তবে এর জন্য আরও অনেক প্রচেষ্টা প্রয়োজন ...


@ জেনি_ম্যাথি: সম্পাদিত - আপনি যা চেয়েছিলেন তা কি?
একটি গাছ নয়

@ জেনি_ম্যাথি, মনে হচ্ছে এটি আমার পক্ষে কাজ করছে। আমি 1-ইনডেক্সিং ব্যবহার করছি, সুতরাং আপনাকে প্রতিটি সংখ্যায় 1 যোগ করতে হবে; পরীক্ষার কেস হয়ে যায় {{16,14,13,15,16},{14,9,1,5,15},{12,2,1,3,8},{16,12,4,8,16}}। যদি আপনি এটি চেষ্টা করে থাকেন এবং এটি এখনও কাজ করে না, আপনি কি বলতে পারেন যে আপনি কী সমস্যা পাচ্ছেন?
গাছ নয়

2

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

T`d`L`1\d
 |\bB\B

.+
X$&¶Y$&¶Z$&
%{`[XYZ]$

([XYZ])[69]
.|.$1
X[^4-B]
...X
X[4AB]
..\X
X[578]
/..X
Y[^369C]
...Y
Y[3C]
---Y
Z[03478BCF]
...Z
Z[1AE]
\..Z
Z[25D]
../Z

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


1

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

J='...'
print'\n'.join(map(''.join,sum([[sum([f[i*3:][:3]for i in j],[])for f in map(list,[J*4+'..\\/...|./../...|...\\..\\'+J*4,J*3+'---.......|........|.......---'+J*3,'...\\..../......../.|........|.\\'+J*3+'./\\.....'])]for j in input()],[])))

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

-1 বাইট ধন্যবাদ LeakyNun


দয়া করে নোট করুন যে 10 এবং 5 পৃথক।
ফাঁস নুন

@ ল্যাকিয়ুন দীর্ঘশ্বাস ফেলল আমি জানলাম আমাকে কিছু গণ্ডগোল করতে হবে। আমি ঠিক না করা অবধি মুছে ফেলা হচ্ছে, আগামীকালের মধ্যেই।
হাইপার নিউট্রিনো

@ ল্যাকইনুন আমি কোডটি ঠিক করেছি, যদিও এখন এটি অত্যন্ত কুরুচিপূর্ণ এবং অসম্পূর্ণ হয়ে উঠেছে।
হাইপারনিউটারিনো

1

এসওজিএল ভি0.12 , 106 89 বাইট

žj}² ³
ē0=?²
{ā;{"⁰9═‼pnk№Ο|╚φ;“2─6nwEX .9*3n²Xƨ.ƨ-¹╬-}²X"č7_#‘3n}² /33³\13³\31³/11žj}┼}O

এখানে চেষ্টা করুন! (এতে ইনপুট স্বাচ্ছন্দ্যের জন্য অতিরিক্ত বাইট রয়েছে otherwise এটি অন্যথায় ইতিমধ্যে স্ট্যাকের মধ্যে অ্যারের আশা করবে)


দয়া করে SOGL অনুবাদক ব্যবহার মোনোস্পেস ফন্ট করা> <।
HyperNeutrino

10 পিরিয়ডের চেয়ে 10 টি স্ল্যাশ বিস্তৃত।
হাইপারনিউটারিনো

1

পাইথন 2, 196 191 181 176 বাইট

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

একটি ফাংশন যা ইনটের অ্যারেগুলির অ্যারে নেয় এবং একটি স্ট্রিং প্রদান করে:

J=''.join;N='\n'.join
f=lambda I:N(N(J(J('\/|-.'[C/16-2]*(C%16)for C in map(ord,'o!j1cSe!f1g1aAbAbAa1h1iAbAbAc!c!d!iSk1f!k'))[c*9+3*j:][:3]for c in r)for j in[0,1,2])for r in I)

সম্পাদনা: জে, এন নির্ধারণ করে 5 বাইট সংরক্ষণ করা হয়েছে; অন্য 10 বাইট কারণ আমি ভুলে গেছি ইনপুটটি ইতিমধ্যে ইনস এর অ্যারে হিসাবে ধরা হয়েছে; এবং তারপরে আরও 5 টি বাইট স্মার্ট চৌকি দিয়ে সংরক্ষণ করা ...

সমস্ত 16 3x3 কোষের সংক্ষিপ্ত স্ট্রিং (144 বাইট, লাইনব্রেকগুলি বাদ দেওয়া) 41 বাইট স্ট্রিং-এ রান-দৈর্ঘ্য-এনকোডযুক্ত:

o!j1cSe!f1g1aAbAbAa1h1iAbAbAc!c!d!iSk1f!k

যেখানে প্রতিটি আরএলই উপাদানকে (cellType, length)অক্ষরটি এনকোড করা হয় chr(32+16*cellType+length)(এটি কার্যকর যে সর্বাধিক রান 15; এবং এটি ord(' ')==3216 দ্বারা বিভাজ্য)। ডিকোডিংয়ের সময়, আমরা '\/|-.'[cellType]মুদ্রণযোগ্য অক্ষর হিসাবে গ্রহণ করি ।

এর পরে বিশেষত চতুর কিছুই ...


1

05 এ বি 1 ই , 61 বাইট

v•2mßklJFΘõÿ|åU‚ιØØ•6B5¡∊¶¡110bTǝ.BJ3ô3ôyèøJ»}»4ÝJð«"\./-|."‡

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


প্যাটার্নের প্রথমার্ধটি এইভাবে সংকুচিত হতে পারে:

5
11111105
1111111125
1113335
1105
2111111125
141141145
25

দ্বিতীয়ার্ধটি হওয়া দরকার:

25
141141145
11011105
1105
1113335
1111111125
11111105
5

আমরা ঠিক প্রথমার্ধটি উল্লম্বভাবে আয়না করতে পারি এবং binary 110 (1101110)এর জন্য সন্নিবেশ করতে পারি 2111111125


এরপরে আমরা এই প্যাটার্নটি নিয়েছি এবং পাঁচভাগে বিভক্ত হয়েছি, তারপরে এটি দিয়ে প্যাড করুন:

1 = 111111111
2 = 111111011
3 = 111111112
4 = 111333111
5 = 110111111
6 = 211111112
7 = 141141141
8 = 211111111
9 = 141141141
A = 110111011
B = 110111111
C = 111333111
D = 111111112
E = 111111111

এখন আমাদের বিল্ডিং ব্লকগুলি রয়েছে, শেষ অংশগুলি যথাযথ বিল্ডিং ব্লকের সাথে ম্যাট্রিক্সের এন্ট্রিগুলি প্রতিস্থাপন করে, সারিগুলিকে একসাথে জিপ করে প্রতিস্থাপন চিহ্ন সহ ব্যবহারকারীকে মুদ্রণ করে:

0 = .........
1 = ......\..
2 = ......../
3 = ...---...
4 = ..\......
5 = /......./
6 = .|..|..|.
7 = /........
8 = /........
9 = .|..|..|.
A = ..\...\..
B = ..\......
C = ...---...
D = ......../
E = .........

কেউ চাইলে আনুষ্ঠানিক অপারেশন ব্যাখ্যা পোস্ট করতে পারেন, ধন্যবাদ।


1

জেলি , 64 বাইট

“¡_ḟ5⁸ṫ⁺Y"⁷ƘzƬɼ¥@TR/ṖQ½3yİ>ẎḄT¥⁹iḟQ¬Ɠl¹µŒ’ṃ“/-\|.”s3s3ṙ9ị@³ZY$€Y

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

এটি একটি নিষ্পাপ সংকোচনের ব্যবহার করে এবং সম্ভবত রান-লেংথ এনকোডিং সহ অনেকগুলি বাইট সংরক্ষণ করতে পারে।

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

“¡_ḟ5⁸ṫ⁺Y"⁷ƘzƬɼ¥@TR/ṖQ½3yİ>ẎḄT¥⁹iḟQ¬Ɠl¹µŒ’ṃ“/-\|.”s3s3ṙ9ị@³ZY$€Y
“¡_ḟ5⁸ṫ⁺Y"⁷ƘzƬɼ¥@TR/ṖQ½3yİ>ẎḄT¥⁹iḟQ¬Ɠl¹µŒ’ encodes the integer 4591777158889232952973696500124538798606476761349931038636020730336909822188496590423586252520
ṃ“/-\|.”                   - convert to base 5 and index into the string to get "/......../.........|..|..|...\...\....\.........---.........../......\.................\........../...---.....\....../......./.|..|..|."
        s3s3               - split every 9 characters into a 3x3 square submatrix       
            ṙ9             - rotate left by 9 to line up the submatrix for 1 with index 1
              ị@³          - index the input into this
                 ZY$€Y     - format
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.