ভিজ্যুয়ালাইজ অন্তর্ভুক্তি-বর্জন


11

অন্তর্ভুক্তি-বর্জন আপনাকে কিছু ইউনিয়ন এবং অন্যান্য মানগুলি জেনে কিছু সেটগুলির মধ্যে ছেদ করার আকারগুলি গণনা করতে দেয়। আমি এটিকে ঠিক ব্যাখ্যা করব না, তবে আপনার চ্যালেঞ্জ হ'ল ভেন ডায়াগ্রামে অন্তর্ভুক্তি-বর্জনকে কল্পনা করা।

কারণ আমি সুন্দর, আপনি চেনাশোনা নয়, আয়তক্ষেত্রগুলি ব্যবহার করবেন।

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

তারপরে, আপনি স্ক্রিনে প্রতিটি আয়তক্ষেত্র আঁকতে হবে (এএসসিআইআই ক্যানভাস) একটি একক অ-সাদা বর্ণের অক্ষর ব্যবহার করে k, যা চয়ন করার জন্য আপনার।

যাইহোক, যখনই দুটি আয়তক্ষেত্র ওভারল্যাপ হয়, তখন ওভারল্যাপিংয়ের ক্ষেত্রটি অন্য একটি অ-সাদা অংশের অক্ষর দিয়ে আঁকতে হবে l != k, এটি চয়ন করার জন্য আপনারও ।

যখনই তিনটি আয়তক্ষেত্র ওভারল্যাপ হয়, তখন ওভারল্যাপিং অঞ্চলটি দিয়ে আঁকতে হবে kএবং একটি বিজোড় সংখ্যক আয়তক্ষেত্রাকার kএবং একটি এমনকি সংখ্যার জন্য l

পটভূমিটি একক সাদা স্থান ( 0x20) হওয়া উচিত ।

পরীক্ষার কেস ( k = "#", l = ".")

0 0 9 9
1 1 10 10
2 2 11 11

#########  
#........# 
#.#######.#
#.#######.#
#.#######.#
#.#######.#
#.#######.#
#.#######.#
#.#######.#
 #........#
  #########

1 1 3 3
2 2 4 4


 ## 
 #.#
  ##

1 1 9 9
2 2 8 8
3 3 7 7


 ########
 #......#
 #.####.#
 #.####.#
 #.####.#
 #.####.#
 #......#
 ########

মন্তব্য

  • শীর্ষস্থানীয় স্থান এবং নিউলাইনগুলি (যা ন্যূনতম স্থানাঙ্ক না হলে ঘটে 0, 0) অবশ্যই উপস্থিত থাকতে হবে
  • কোনও চলমান স্পেস এবং নিউলাইনগুলি যুক্তিসঙ্গত পরিমাণে অনুমোদিত (যেমন 100000000 নিউলাইনের মতো ট্রেইল করবেন না, এটি কেবল বিরক্তিকর)
  • x- এবং y- অক্ষগুলি যে কোনও উপায়ে মুখোমুখি হতে পারে তবে আপনার অবশ্যই সামঞ্জস্য থাকতে হবে এবং নির্দিষ্ট করতে হবে (ডিফল্টটি এক্স-ডান এবং y- ডাউন)
  • স্থানাঙ্কগুলি 0-, 1-, বা 2- সূচকযুক্ত হতে পারে।

রেফারেন্স প্রোটন বাস্তবায়ন

এটি , সুতরাং উদ্দেশ্যটি হ'ল সংক্ষিপ্ততম কোডটি। শুভ গল্ফিং!


এক্স-অক্ষটি ডানদিকে প্রসারিত এবং y- অক্ষটি উপরের-বাম কোণ থেকে নীচের দিকে প্রসারিত?
ব্যবহারকারী 202729

@ ব্যবহারকারী 202729 পরীক্ষার ক্ষেত্রে, হ্যাঁ (প্রকৃতপক্ষে অস্পষ্ট) তবে আপনি যতক্ষণ না সামঞ্জস্যতা ততক্ষণ ব্যবহার করতে পারেন
HyperNeutrino

@ ডিজাইমা ইয়ুপ [...]
হাইপার নিউট্রিনো

1
@ জোকিং হ্যাঁ, আমি ইনপুট ফর্ম্যাটটিকে আরও নমনীয় করব। বুঝতে পেরেছিলাম যে এটি একটি পুরানো চ্যালেঞ্জ এবং চ্যালেঞ্জ লেখার সাথে আমি এখনও খুব বেশি পরিচিত ছিলাম না
হাইপারনিউটারিনো

1
@ জোকিং প্রকৃতপক্ষে আমি চারটি সংমিশ্রণের যে কোনওটির অনুমতি দেব।
হাইপারনিউটারিনো

উত্তর:


4

6502 মেশিন কোড রুটিন (সি 64), 57 বাইট

20 44 E5 A0 03 84 FB 20 9B B7 A4 FB 96 22 C6 FB 10 F5 85 FC A6 24 20 F0 E9 A4
25 B1 D1 09 01 49 02 91 D1 C8 C4 23 D0 F3 E8 E4 22 D0 E9 A9 2C C5 FC F0 D0 A5
C6 F0 FC C6 C6 4C 44 E5

এটি অবস্থান-স্বতন্ত্র কোড, এটি কোথাও র‌্যামে রাখুন এবং এটিকে কল করার জন্য সঠিক সূচনা ঠিকানা ব্যবহার করুন sys

অনলাইন ডেমো (শুরু ঠিকানা$C000/49152)।

ব্যবহার: sys<startaddress>,<x1>,<y1>,<x2>,<y2>[,<x1>,<y1>,<x2>,<y2>[,...]]

উদাহরণ: sys49152,0,0,9,9,1,1,10,10,2,2,11,11

যুক্তিসঙ্গত সংখ্যার ব্যাপ্তিতে: এই 8-বিট মেশিনের প্রাকৃতিক পরিসর [0-255], এবং প্রোগ্রামটি এটি পরামিতি হিসাবে গ্রহণ করবে। তবে সি 64 স্ক্রিনটিতে কেবল 40 টি কলাম এবং 25 টি সারি রয়েছে, সুতরাং যুক্তিযুক্ত পরিসরটি x মানগুলির জন্য [0-40] এবং y মানগুলির জন্য [0-25] সীমাবদ্ধ করে । অন্যান্য মানগুলি ব্যবহারে অনির্দেশ্য আচরণ থাকবে।


অপ্রয়োজনীয় তালিকা মন্তব্য করেছে:

20 44 E5    JSR $E544           ; clear screen
 .mainloop:
A0 03       LDY #$03            ; index for reading coordinates
84 FB       STY $FB
 .inputrect:
20 9B B7    JSR $B79B           ; read 8bit value from parameter
A4 FB       LDY $FB
96 22       STX $22,Y           ; and store to $22-$25
C6 FB       DEC $FB
10 F5       BPL .inputrect      ; parameter reading loop
85 FC       STA $FC             ; store last character
A6 24       LDX $24             ; load y1
 .rowloop:
20 F0 E9    JSR $E9F0           ; get pointer to screen row in $d1/$d2
A4 25       LDY $25             ; load x1
 .colloop:
B1 D1       LDA ($D1),Y         ; load character at screen position
09 01       ORA #$01            ; set bit 0 ( -> '#')
49 02       EOR #$02            ; toggle bit 1 (toggle between '#' and '!' )
91 D1       STA ($D1),Y         ; store character at screen position
C8          INY                 ; next x
C4 23       CPY $23             ; equals x2?
D0 F3       BNE .colloop        ; no -> repeat
E8          INX                 ; next y
E4 22       CPX $22             ; equals y2?
D0 E9       BNE .rowloop        ; no -> repeat
A9 2C       LDA #$2C            ; load ','
C5 FC       CMP $FC             ; compare with last character from parsing
F0 D0       BEQ .mainloop       ; if ',', repeat reading coordinates
 .waitkey:
A5 C6       LDA $C6             ; load input buffer size
F0 FC       BEQ .waitkey        ; and repeat until non-empty
C6 C6       DEC $C6             ; set back to empty
4C 44 E5    JMP $E544           ; clear screen


3

কাঠকয়লা , 40 বাইট

WS«≔I⪪ι ιF…§ι⁰§ι²«Jκ§ι¹UMKD⁻§ι³§ι¹↓§10Σλ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। একবার ASCII- কেবল কাঠকয়লে একটি বাগ ঠিক করে দিলে একবার 6 বাইট সংক্ষিপ্ত হবে । কো-অর্ডিনেটের স্থান-বিভাজিত তালিকার একটি নতুন লাইন-সমাপ্ত তালিকা হিসাবে ইনপুট নেয়। ব্যাখ্যা:

WS«

কোনও ফাঁকা রেখা না পৌঁছানো অবধি প্রতিটি ইনপুট ল্যাপে লুপ করুন।

≔I⪪ι ι

সমন্বয়কারীদের তালিকায় লাইনটি বিভক্ত করুন।

F…§ι⁰§ι²«

সমস্ত এক্স কো-অর্ডিনেটের উপর লুপ করুন।

Jκ§ι¹

কলামের শীর্ষে যান।

UM

প্রতিটির উপরে মানচিত্র ...

KD⁻§ι³§ι¹↓

... কলামের সমস্ত কক্ষ ...

§10Σλ

... নতুন মানটি 0যদি তা থাকে তবে তা 1হয় 1। সম্পাদনা করুন: এটি লেখার পরে শীঘ্রই চারকোল এমন আচরণের পরিবর্তন করে ¬যা I¬Σλএখানে 1 বাইট সংরক্ষণের জন্য কাজ করে।



@ আমার কার্যসংক্রান্ত মধ্যে হওয়া ASCII শুধুমাত্র বাগ - আমি মুদ্রণ করতে পারেন একটি \nপরিবর্তে আমি ...
নিল



2

আর , 196 189 বাইট

m=matrix
x=m(scan(file("stdin")),4)
y=m(0,max(x[3,]),max(x[4,]))
n=ncol(x)
while(n){z=x[,n]  
i=z[1]:z[3]
j=z[2]:z[4]
y[i,j]=y[i,j]+1
n=n-1}
i=!y
y=y%%2+1
y[i]=' '
cat(rbind(y,'\n'),sep='')

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

কোডটি স্ট্যান্ডিন হিসাবে ইনপুট পড়বে, x1 y1 x2 y2 টিপল হিসাবে সজ্জিত, যেখানে x কলাম এবং y হল সারি। আমি ওভারল্যাপ স্তরের জন্য 1 এবং 2 ব্যবহার করছি, যেখানে 1 একটি সম স্তরের প্রতিনিধিত্ব করে।

ব্যবহারকারী 2390246 ধন্যবাদ 7 বাইট সংরক্ষণ করা।


1
এটিকে গল্ফ করার জন্য কয়েকটি ধারণা: ১. আপনার ম্যাট্রিক্স এক্সকে রূপান্তর করার কোনও দরকার আছে কি? ২. পরিবর্তে nrow(বা ncolরূপান্তর না হলে) ব্যবহার করুন dim(x)[1]৩. আপনি i=y>0কেবল এটি একবার ব্যবহার করার কারণে আপনাকে সংজ্ঞা দেওয়ার দরকার নেই ।
ব্যবহারকারী 2390246

4. ম্যাট্রিক্স -1 থেকে শুরু করুন এবং তারপরে কেবল y=y%%2এবং ব্যবহার করুন y[y<0]=" "
ব্যবহারকারী 2390246

ধন্যবাদ. আমি প্রস্তাবনা 1 এবং 2 অন্তর্ভুক্ত করেছি 3 এবং 4 পরামর্শগুলি কাজ করবে না কারণ: i = y> 0 মডুলাস প্রয়োগ করার আগে স্তরগুলি সংরক্ষণ করতে ব্যবহৃত হয়, এবং মডিউলটি সংরক্ষণের স্বাক্ষর করা উচিত নয়। যাইহোক, এটি আমাকে 0% মিথ্যা, এবং দুটি অতিরিক্ত বাইট সংরক্ষণের অন্তর্নিহিত আর কনভেনশন ব্যবহার করার ধারণা দিয়েছে। :)
NofP

2

রাকু , 54 বাইট

{my@a;{@a[$^a..$^b;$^c..$^d]X+^=1}for $_;@a >>~|>>' '}

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

সমেত স্থানাঙ্ক, অর্থাত্ যেমন স্থানাঙ্ক একটি ফ্ল্যাট তালিকা হিসাবে ইনপুট লাগে x1,y1,x2,y2,x1,y1,x2,y2...দিয়ে অক্ষর তালিকায় একটি তালিকা হিসাবে এবং আউটপুট kহচ্ছে 1এবং lহচ্ছে 0

ব্যাখ্যা:

{                                                    }  # Anonymous codeblock
 my@a;    # Declare an array
      {                          }for $_;    # Loop over the input
       @a[                 ]   # Indexing into @a
          $^a..$^b             # The range of rows
                  ;$^c..$^d    # And the range of columns for each
                            X        # And for each cell
                             +^=1    # Set it to itself bitwise XOR'd with 1
                         # Cells not yet accessed are numerically zero
                                         @a >>~|>>' '   # Stringwise OR each cell with a space
                         # Cells not yet accessed are stringily empty         

1

জেলি , 43 বাইট

+µ>2Ḥạ
ạ1ẋ$0ẋ⁸¤;µ/€«þ/µ€z0z€0Z€Zz€0Z€ç"/o⁶Y

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

ব্যাখ্যা

+µ>2Ḥạ                                Helper Link; combines final rectangles (0 is blank, 1 is covered, 2 is uncovered)
+                                     add the two values
 µ                                    (with the sum...)
  >2                                  check if it's greater than two
    Ḥ                                 double the result (2 if it's 3 or 4, 0 if it's 0, 1, or 2)
     ạ                                absolute difference (0 should take whatever the other thing's value is, 1+1 and 2+2 should give 2, 1+2 and 2+1 should give 1)
ạ1ẋ$0ẋ⁸¤;µ/€«þ/µ€z0z€0Z€Zz€0Z€ç"/o⁶Y  Main Link
               µ€                     For each rectangle stored as [[x1, x2], [y1, y2]]
         µ/€                          For each of [a, b] = [x1, x2] and [y1, y2], reduce it by (in other words, use a dyad on a size-2 list)
 1ẋ$                                  repeat [1]            times
ạ                                                abs(a - b)
        ;                             and append to
    0ẋ ¤                              [0] repeated   times
      ⁸                                            a
            «þ/                       and reduce by minimum outer product table (take the outer product table, by minimum, of the x results and the y results)
                                      [NOTE] At this point, we have a list of matrices with 0s as blanks and 1 as covered
                 z0z€0Z€Zz€0Z€        Make all of the matrices the same size:
                 z0                   zip, fill with 0 (all matrices are the same length, but not width, and now are lists of row-wise lists of rows)
                   z€0                zip each, fill with 0 (all rows are the same length within their row-wise lists, and are now lists of row-wise lists of columns)
                      Z€              zip each (flip rows back to lists of row-lists of rows)
                        Z             zip (flip back to matrices); however, if a matrix is smaller on both axes, its rows will not be the same length
                         z€0          zip each, fill with 0 (all rows in each matrix are the same length and the value is now a list of transposed matrices)
                            Z€        zip each (the value is now a list of matrices, all the same length, filled with 0 (empty space))
                              ç"/     reduce by (vectorized) the relation in the Helper Link (to combine all of the final values)
                                 o⁶   logical OR with " "; replace 0s with spaces
                                   Y  join with newlines (formatting)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.