আমার আঁকুন


25

উচ্চতার একটি আয়তক্ষেত্রাকার ম্যাট্রিক্স দেওয়া, এর রূপগুলি আঁকুন।

কার্য

দুটি উপাদান xএবং yযদি একই কনট্যুর স্তরে থাকে তবে floor(x/10) == floor(y/10)। উদাহরণস্বরূপ, 52এবং 58একই কনট্যুর স্তরে রয়েছে তবে 58এবং64 নয়।

চিত্র আঁকার কাজটি নীচে হিসাবে সংজ্ঞায়িত করা হয়: প্রতিটি উপাদানগুলির জন্য e, এটি নীচে নির্বাচিত একটি দ্বি-চর স্ট্রিংয়ের সাথে প্রতিস্থাপন করুন:

  • প্রথম চরিত্রটি হ'ল " "যদি নীচের উপাদানটি eএকই কনট্যুর স্তরের মতো হয় eবা নীচে কোনও উপাদান না থাকে eএবং"_" অন্যথায় না থাকে
  • দ্বিতীয় চরিত্রটি হ'ল " "যদি ডানদিকে উপাদান eএকই কনট্যুর স্তরে থাকে eবা ডানদিকে কোনও উপাদান নেই eএবং "|"অন্যথায়

সারিগুলির মধ্যে থাকা উপাদানগুলি একত্রে যোগ হয়, তারপরে সারিগুলি নতুন লাইনের সাথে যুক্ত হয়।

উদাহরণ

ধরা যাক ইনপুটটি হ'ল [[5,20],[3,6]]ভিজ্যুয়ালাইজড

5 20
3 6

আমরা প্রথম তাকান 5। যেহেতু 3একই কনট্যুর স্তরে 5, তাই প্রথম চরিত্রটি " "। যেহেতু 20একই কনট্যুর স্তরে নেই 5, দ্বিতীয় চরিত্রটি"|"

এখন আমরা তাকান 20। যেহেতু 6একই কনট্যুর স্তরে নেই 20, তাই প্রথম চরিত্রটি "_"। যেহেতু ডানদিকে কোনও উপাদান নেই 20, তাই দ্বিতীয় চরিত্রটি" "

এখন আমরা তাকান 3। যেহেতু নীচে কোনও উপাদান নেই 3, তাই প্রথম চরিত্রটি " "। যেহেতু 6একই কনট্যুর স্তরে 3, তাই দ্বিতীয় চরিত্রটি" "

এখন আমরা তাকান 6। যেহেতু নীচে কোনও উপাদান নেই 6, তাই প্রথম চরিত্রটি " "। যেহেতু ডানদিকে কোনও উপাদান নেই 6, তাই দ্বিতীয় চরিত্রটি" "

এই দ্বি-চর স্ট্রিংয়ের উপর ভিত্তি করে আমরা পেতে প্রতিস্থাপনগুলি করি [[" |","_ "],[" "," "]]। এগুলিতে একসাথে যোগদান করে আমরা এর আউটপুট পাই

 |_ 
    

বিধি

  • ইনপুট ম্যাট্রিক্স সর্বদা আয়তক্ষেত্রাকার এবং ধনাত্মক পূর্ণসংখ্যার সমন্বয়ে গঠিত হবে।
  • ট্রেলিং স্পেস বা নিউলাইনগুলি কোনও পরিমাণে (0 সহ) থাকতে পারে এবং কোনওভাবেই সামঞ্জস্য হতে হবে না।
  • যতক্ষণ আপনি একই ফলাফল তৈরি করেন ততক্ষণ আপনাকে একই অ্যালগরিদম অনুসরণ করতে হবে না।
  • আপনার প্রোগ্রাম বা ফাংশনটি একটি নতুন লাইন দ্বারা পৃথক স্ট্রিং, স্ট্রিংগুলির তালিকা বা সমতুল্য আউটপুট দিতে পারে।
  • এটি , তাই বাইট জেতে সংক্ষিপ্ততম কোড।

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

input
output

[[1,5,8,9],[3,11,13,8],[7,14,10,9],[4,8,7,6]]
  _ _  
 |   | 
 |_ _| 

[[0,10,20,30,40,50,60,70,80,90],[0,0,10,10,20,20,30,30,40,40],[0,0,0,10,10,10,20,20,20,30],[0,0,0,0,10,10,10,10,20,20],[0,0,0,0,0,10,10,10,10,10],[0,0,0,0,0,0,10,10,10,10],[0,0,0,0,0,0,0,10,10,10],[0,0,0,0,0,0,0,0,10,10],[0,0,0,0,0,0,0,0,0,10],[0,0,0,0,0,0,0,0,0,0]]
 |_|_|_|_|_|_|_|_|_
   |_  |_ _|_ _|_ _
     |_    |_ _  |_
       |_      |_ _
         |_        
           |_      
             |_    
               |_  
                 |_


[[5,5,5,5,5,5,5,5,5,5,5],[5,10,10,10,10,10,10,10,10,10,5],[5,10,15,15,15,15,15,15,15,10,5],[5,10,15,20,20,20,20,20,15,10,5],[5,10,15,20,25,25,25,20,15,10,5],[5,10,15,20,25,30,25,20,15,10,5],[5,10,15,20,25,25,25,20,15,10,5],[5,10,15,20,20,20,20,20,15,10,5],[5,10,15,15,15,15,15,15,15,10,5],[5,10,10,10,10,10,10,10,10,10,5],[5,5,5,5,5,5,5,5,5,5,5]]
  _ _ _ _ _ _ _ _ _  
 |                 | 
 |    _ _ _ _ _    | 
 |   |         |   | 
 |   |    _    |   | 
 |   |   |_|   |   | 
 |   |         |   | 
 |   |_ _ _ _ _|   | 
 |                 | 
 |_ _ _ _ _ _ _ _ _| 

[[35,32,29,26,25,25,25,26,29,32,35],[32,28,25,22,20,20,20,22,25,28,32],[29,25,21,18,15,15,15,18,21,25,29],[26,22,18,14,11,10,11,14,18,22,26],[25,20,15,11,7,5,7,11,15,20,25],[25,20,15,10,5,0,5,10,15,20,25],[25,20,15,11,7,5,7,11,15,20,25],[26,22,18,14,11,10,11,14,18,22,26],[29,25,21,18,15,15,15,18,21,25,29],[32,28,25,22,20,20,20,22,25,28,32],[35,32,29,26,25,25,25,26,29,32,35]]
  _|             |_  
_|    _ _ _ _ _    |_
    _|         |_    
   |    _ _ _    |   
   |   |     |   |   
   |   |     |   |   
   |   |_ _ _|   |   
   |_           _|   
_    |_ _ _ _ _|    _
 |_               _| 
   |             |  

1
এটি কতটা শীতল হবে তা বুঝতে পেরে আমি এটি পড়তেও শুরু করি না
ক্রিস্টোফার

উত্তর:


6

পার্ল 6 , 135 বাইট (131 অক্ষর)

{my$n="_";sub w{$^a.chop-$^b.chop??$n!!" "};my&q={|.[1..*],.tail};(($_ «[&w]».&q) ZZ~{$n="|";$_ «[&w]».map(*.&q)}()).map:{say |$_}}

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

কিছুটা অবধি:

{
    my $n = "_";
    sub w { $^a.chop - $^b.chop ?? $n !! " "};
    my &q = {|.[1..*],.tail};
    (
        ($_ «[&w]».&q)
        ZZ~
        {$n="|";$_ «[&w]».map(*.&q)}()
    ).map:{say |$_}
}

ব্যাখ্যা : প্রথমত, আমরা একটি পরিবর্তনশীল $n(লাইন 2) এবং একটি ফাংশন w(লাইন 3) সংজ্ঞায়িত করি । যদি এই দুটি যুক্তি একই "উচ্চতা" এ থাকে এবং $nঅন্যথায় ভেরিয়েবলের বিষয়বস্তু হয় তবে এই ফাংশনটি একটি স্থান দেয় । 10 দ্বারা ভাগ এবং ফ্লোরিংয়ের পরিবর্তে, আমরা সত্যটি ব্যবহার করি যে ইনটগুলি Cool(স্ট্রিংয়ের মতো আচরণ করা যেতে পারে) এবং chopশেষ অক্ষর (= অঙ্ক) সরাতে ব্যবহার করি । তারপরে আমরা শান্তভাবে তাদের বিয়োগ করে, আবার সংখ্যায় জোর করে :—)।

এর পরে (লাইন 4) আমরা একটি ফাংশন তৈরি করি qযা একটি তালিকা গ্রহণ করে এবং সেই তালিকাটি প্রথম উপাদানটি সরিয়ে এবং শেষ উপাদানটি নকল করে দেয় returns

পরবর্তী 3 লাইনে, আমরা ইনপুট ম্যাট্রিক্স থেকে আরও 2 টি ম্যাট্রিক তৈরি করতে যাচ্ছি: প্রথমটির প্রথম সারিটি অনুপস্থিত এবং শেষ সারিটি নকল হয়েছে (এটি কেবল .&q- ব্যবহার করে .&, আপনি কোনও কিছুর উপর একটি ফাংশন কল করতে পারেন যেমন এটি ছিল একটি পদ্ধতি - বিন্দুর সামনের জিনিসটি প্রথম যুক্তিটি হয়), অন্যটির প্রথম কলামটি অনুপস্থিত এবং শেষ কলামটি নকল (এটি .map(*.&q)) that's

প্রথম (লাইন 4) আমরা আসল ম্যাট্রিক্স নিই $_ করি, এটি "স্থানান্তরিত সারি" ম্যাট্রিক্সের সাহায্যে "ওভারলে" করি এবং মেলাতে থাকা উপাদানগুলিতে wবাইনারি অপারেটর (এটি [&w]) হিসাবে ফাংশনটি ব্যবহার করি । এক যে রাখে একটি _যেখানেই থাকুন না কেন ম্যাচিং উপাদানের বিভিন্ন পরিবাহিত হয়, এবং একটি অন্যথায়। সুতরাং আমরা ফলাফলটির get পেয়েছি (কেবলমাত্র "প্রথম অক্ষরগুলি")।

লাইন 6 এ, আমরা একই জিনিসটি করি তবে প্রথমে আমরা পরিবর্তন করি $n করতে |, এবং আমরা এখন "আস্তরণ" স্থানান্তরিত কলাম সহ ম্যাট্রিক্স মূল ম্যাট্রিক্স। ফলাফলের |আলাদা আলাদা এবং রয়েছে একই উচ্চতায় রয়েছে। এগুলি হ'ল "দ্বিতীয় অক্ষর"।

এখন আমরা কেবল তাদের একত্রিত করি। আমরা কনটাক্টের সাথে জিপ দিয়ে অ্যারেগুলি জিপ করি (হ্যাঁ ...), যার ফলস্বরূপ মূল আকারের একটি ম্যাট্রিক্স হয় যার প্রতিটি উপাদান "অর্ধ-সমাধান" এর 2 টি মিলে যায় aten পরিশেষে, আমরা কেবল এই ম্যাট্রিক্সের উপরে ম্যাপ করব (যা সত্যিকারের তালিকার একটি তালিকা)। এই তালিকাগুলির প্রত্যেকটি সমতল এবং তারপরে say(একটি নতুন লাইন দিয়ে মুদ্রিত)। যেহেতু sayযে কোনও সংখ্যক আর্গুমেন্ট নিতে পারে এবং এটি বিভাজক ছাড়াই এগুলি সমস্ত মুদ্রণ করে, কেবল শেষদিকে নতুন লাইন তৈরি করে, আমরা স্ট্যাডআউটে পছন্দসই ছবিটি পাই। (এবং ব্লকটি গুলিগুলির একটি তালিকা দেয় True(প্রত্যেকে sayএকটি করে ফেরত দেয় True) তবে কে যত্ন করে।)


+1 এর জন্যbut who cares
হাইপারনিউটারিনো

5

জেলি ,  25 23  22 বাইট

মাইল ( Iভেক্টরাইজস) -1 বাইট ধন্যবাদ

:⁵I;€0ao⁶
Zç”_Zż"ç”|$Y

ফলাফল মুদ্রণ একটি সম্পূর্ণ প্রোগ্রাম। মোনাডিক লিঙ্ক হিসাবে এটি সংখ্যার তালিকাগুলির তালিকা, উচ্চতা এবং একটি তালিকার তালিকা নিয়ে আসে, তবে এই "সারিগুলিতে" দুটি অক্ষর "জোড়" এর তালিকা রয়েছে - যদি এটি ঠিক থাকে তবে 1 বাইট অপসারণের মাধ্যমে সংরক্ষণ করা যেতে পারে Y

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

কিভাবে?

:⁵I;€0ao⁶ - Link 1, assignCharacters (row-wise): list of lists of numbers; character, c
 ⁵        - literal 10
:         - integer division (vectorises)
  I       - incremental differences (vectorises) (zero if the same else non-zero)
     0    - literal 0
   ;€     - concatenate for €ach (rightmost edge of a row has no contour mark)
      a   - logical and (vectorises) with c (replace non-zeros with the contour character)
        ⁶ - literal space character
       o  - logical or (vectorises) (replace the zeros with spaces)

Zç”_Zż"ç”|$Y - Main link: list of lists of numbers, contours
Z            - transpose the input (get the columns)
  ”_         - literal underscore character, '_'
 ç           - call the last link (1) as a dyad with '_'
    Z        - transpose the result
          $  - last two links as a monad:
        ”|   -   literal pipe character, '|'
       ç     -   call the last link (1) as a dyad with '|'
      "      - zip with the dyadic operation:
     ż       -   zip (interleave the column-wise characters with the row-wise ones)
           Y - join with newlines
             - implicit print

grr 3 বাইট +1 তবে আমি আপনাকে আউটগল্ফ করার চেষ্টা করব;)
হাইপার নিউট্রিনো

স্বতন্ত্র সমাধান - সবেমাত্র আপনার দেখতে খুব একই রকম! আপনাকে সরাসরি সরাসরি বাঁচায় ...
জোনাথন অ্যালান

আপনি :⁵I;€0ao⁶মূল লিঙ্কের পরিবর্তে Zç”_Zż"ç”|$Y
মাইল

@ মাইল ওহ ওহ, কাজ করে? ধন্যবাদ! আমি ভেবেছিলাম যে এর Iমতো ভেক্টরাইজ হবে না।
জোনাথন অ্যালান

হ্যাঁ Iগভীরতা 1 vectorizes, এবং উভয় aএবং oগভীরতা 0 এ vectorize
মাইল


3

জেলি , 24 বাইট

:⁵IṠ;€0
ZÇZị⁾_ +³Ç¤ị⁾| ¤

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

ব্যাখ্যা

:⁵IṠ;€0           Helper Link; get contour data
:                 Floor division by
 ⁵                10
  I               Compute increments
   Ṡ              Sign; ±1 for different values and 0 for same values
    ;             Append
      0           Zero
     €            To each row
ZÇZị⁾_ +³Ç¤ị⁾| ¤  Main Link
Z                 Zip the input (for vertical contours _)
 Ç                Get the contour data
  Z               Zip the data (because it's zipped from the first Z)
   ị              Index into the string
    ⁾_            "_ "
       +          Add (vectorizing twice) to
        ³ ¤    ¤  Nilad starting from (input)
         Ç        Get contour data (horizontal contours |)
           ị      Index into the string
            ⁾|    "| "

-2 বাইট জোনাথন অ্যালানকে ধন্যবাদ


আপনার সমাধানটি আসলে এটি সরিয়ে ফেলতে পারে Y- এটি অক্ষরের তালিকাগুলির একটি তালিকা ফিরিয়ে দেবে, যা আমি বিশ্বাস করি যে ঠিক আছে (যখন আমার "সারিগুলির মধ্যে জোড়া রয়েছে)।
জোনাথন অ্যালান

@ জোনাথন অ্যালান ওহ হ্যাঁ সত্য ... ধন্যবাদ!
হাইপারনিউটারিনো

2

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

l=[[j/10for j in i]for i in input()]
for i,j in enumerate(l[:-1]):print''.join('_ '[h==l[i+1][g]]+'| '[h==j[g+1]]for g,h in enumerate(j[:-1]))+'_ '[j[-1]==l[i+1][-1]]
print''.join(' '+'| '[i==j]for i,j in zip(l[-1],l[-1][1:]))

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

হ্যাঁ, এটি যুক্তি খুঁজে বের করতে একটি doozy ছিল। আমি এখন হাইপার নিউট্রিনোকে ছোট সংক্ষিপ্ত উত্তর দিয়ে দেখছি তবে এটি পোস্ট না করার জন্য আমি খুব বেশি কাজ করে ফেলেছি । : P: P

এছাড়াও, আমি কি বলতে পারি, এটি ASCII- আর্ট করার একটি দুর্দান্ত উপায়। আমি এগুলির আরও একটি নৌকা চালানোর সময় আমাকে ক্ষমা করুন।


> নিনজা: ডুড 45 মিনিট হয়ে গেছে
হাইপারনিউটারিনো

হ্যাঁ, আমি উত্তরগুলির দিকে
তাকাইনি

enumerateপুরো নাম দু'বার ব্যবহার না করে পরিবর্তে ভেরিয়েবল নির্ধারণ করে আপনি 4 বাইট সংরক্ষণ করতে পারেন ।
জোনাথন ফ্রেচ

প্রথম সরিয়ে 218 বাইটenumerate (obs, আমাকে এটির লিঙ্ক করতে সক্ষম হতে কিছু ইনপুটগুলি সরিয়ে ফেলতে হয়েছিল)
ফিলিপ নার্দি বাতিস্তা

2

জে, 58 বাইট

f=.{~0==/@]
[:(,/"2)2 2((' _'f{."1),' |'f{.);.3 1:+<.@%&10

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

একটি বেনামি ফাংশন যা ম্যাট্রিক্স নেয় এবং আউটপুট দেয়।

উন্নতির জন্য লোটার ঘর এখানে। সমস্ত পরীক্ষার কেস করার চেষ্টা করার মতো সময় আমার হাতে ছিল না তাই কোনও সমস্যা আছে কিনা তা আমাকে জানান। আরও গল্ফ করার চেষ্টা করবে এবং পরে ব্যাখ্যা করবে।

(দ্রুত) ব্যাখ্যা

সহায়ক ফাংশন: 2 দৈর্ঘ্যের অ্যারের প্রথম উপাদানটি দ্বিতীয়টির সমান কিনা তার উপর ভিত্তি করে 2 দৈর্ঘ্যের 2 স্ট্রিংয়ে সূচকগুলি। যদি এটি সমান হয় তবে এটি জেরোথ উপাদানকে সূচক করে, যদি এটি অসম হয় তবে এটি প্রথমটিতে সূচক করে। 1 দৈর্ঘ্যের অ্যারে সর্বদা স্ট্রিংয়ের জিরোথ এলিমেন্টে সূচক হয়।

f=.{~0==/@]

প্রধান ফাংশন

[:(,/"2)2 2((' _'f{."1),' |'f{.);.3 1:+<.@%&10

1:+<.@%&10 প্রতিটি উপাদানকে 10 দ্বারা বিভক্ত করে 1 টি যুক্ত করে (যাতে আমরা কখনই 0 পাই না - এটি সহায়ক ফাংশনের জন্য গুরুত্বপূর্ণ)।

2 2((' _'f{."1),' |'f{.);.3 ম্যাট্রিক্স কে 2 এক্স 2 সেগমেন্টে কেটে ফেললে তা কাটাতে পারে (অন্যথায় এটি প্রান্তগুলির নিকটে একটি 2 x 1, 1 x 2, বা 1 x 1 বিভাগ দেবে) এবং যে ফাংশন ব্যবহার করে তা প্রয়োগ করে f উপরের বাম উপাদানটিকে শীর্ষে তুলনা ডান এবং নীচে বাম দিকে শীর্ষ বাম উপাদান।

(,/"2)ফলাফলকে পছন্দসই আকারে চ্যাপ্টা করে। আমি সত্যিই অনুভব করি যে এটি ব্যবহার করা (এবং অন্যান্য অনেক কিছুই আমি ব্যবহার করতে চাই না) এড়াতে সক্ষম হওয়া উচিত।



2

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

a=>a.map(b=>b.map(c=>c/10|0)).map((b,i,a)=>b.map((c,j)=>((a[i+1]||0)[j]-c?'_':' ')+(b[j+1]-c?'|':' ')).join``).join`\n`

যেখানে \nআক্ষরিক নিউলাইন চরিত্রের প্রতিনিধিত্ব করে। সম্পাদনা: @ বুলিন্টকে ধন্যবাদ 2 বাইট সংরক্ষিত

f=
a=>a.map(b=>b.map(c=>c/10|0)).map((b,i,a)=>b.map((c,j)=>((a[i+1]||0)[j]-c?'_':' ')+(b[j+1]-c?'|':' ')).join``).join`
`
;[
[[5,20],[3,6]]
,
[[1,5,8,9],[3,11,13,8],[7,14,10,9],[4,8,7,6]]
,
[[0,10,20,30,40,50,60,70,80,90],[0,0,10,10,20,20,30,30,40,40],[0,0,0,10,10,10,20,20,20,30],[0,0,0,0,10,10,10,10,20,20],[0,0,0,0,0,10,10,10,10,10],[0,0,0,0,0,0,10,10,10,10],[0,0,0,0,0,0,0,10,10,10],[0,0,0,0,0,0,0,0,10,10],[0,0,0,0,0,0,0,0,0,10],[0,0,0,0,0,0,0,0,0,0]]
,
[[5,5,5,5,5,5,5,5,5,5,5],[5,10,10,10,10,10,10,10,10,10,5],[5,10,15,15,15,15,15,15,15,10,5],[5,10,15,20,20,20,20,20,15,10,5],[5,10,15,20,25,25,25,20,15,10,5],[5,10,15,20,25,30,25,20,15,10,5],[5,10,15,20,25,25,25,20,15,10,5],[5,10,15,20,20,20,20,20,15,10,5],[5,10,15,15,15,15,15,15,15,10,5],[5,10,10,10,10,10,10,10,10,10,5],[5,5,5,5,5,5,5,5,5,5,5]]
,
[[35,32,29,26,25,25,25,26,29,32,35],[32,28,25,22,20,20,20,22,25,28,32],[29,25,21,18,15,15,15,18,21,25,29],[26,22,18,14,11,10,11,14,18,22,26],[25,20,15,11,7,5,7,11,15,20,25],[25,20,15,10,5,0,5,10,15,20,25],[25,20,15,11,7,5,7,11,15,20,25],[26,22,18,14,11,10,11,14,18,22,26],[29,25,21,18,15,15,15,18,21,25,29],[32,28,25,22,20,20,20,22,25,28,32],[35,32,29,26,25,25,25,26,29,32,35]]
].forEach(a=>document.write(['<pre>','</pre>'].join(f(a))));


আপনি (a[i] || [])[j]কন্সট্রাক্টসগুলিতে পরিবর্তন করতে পারেন(a[i] || 0)[j]
বুলিন্ট

এছাড়াও, সর্বশেষে join`\n`আপনি \nঅংশটি সরাতে এবং এটি একটি সত্যিকারের নতুন লাইনের সাথে প্রতিস্থাপন করতে পারেন
Bintlint

114 বাইট:a=>a.map(b=>b.map(c=>c/10|0)).map((b,i,a)=>b.map((c,j)=>" _"[(a[i+1]||0)[j]-c&1]+" |"[b[j+1]-c&1]).join``).join`<new line here>`
Bintlint

@ বিলিন্ট বাহ, আমি সেই \nঅংশটি করতে ভুলে যাচ্ছি ; আমি একটি আরইপিএলে পরীক্ষা করি যাতে আক্ষরিক নতুনলাইনগুলি would
নিল

@ বুলিন্ট তবে আপনার শেষ পরামর্শটি মূল উদাহরণটির জন্য ব্যর্থ হয়েছে, যা আমি ফলাফলগুলির তালিকায় যুক্ত করেছি।
নীল

1

প্রোটন , 202 বাইট

R=(L=len)+range
k=[map((//)&10,r)for r:eval(input())]
d=(x,y,X,Y)=>X>=L(k)or Y>=L(k[X])or k[x][y]==k[X][Y]
print('\n'.join(map(''.join,[['_ '[d(x,y,x+1,y)]+'| '[d(x,y,x,y+1)]for y:R(k[x])]for x:R(k)])))

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

-2 বাইট
পাইথন 2 এর পরিবর্তে প্রোটনে স্যুইচ করে জোনাথন ফ্রেচ -15 বাইটকে ধন্যবাদ জানায়


আপনি প্রতিস্থাপন এবং সংজ্ঞা lenদিয়ে দুটি বাইট সংরক্ষণ করতে পারেন । LL=len;
জোনাথন ফ্রেচ

1

জাভা 8, 200 170 169 বাইট

a->{String r="";for(int l=a.length,i=0,j;i<l;i++,r+="\n")for(j=0;j<l;r+=(i>l-2||a[i][j]/10==a[i+1][j]/10?" ":"_")+(j++>l-2||a[i][j-1]/10==a[i][j]/10?" ":"|"));return r;}

ব্যাখ্যা:

এখানে চেষ্টা করুন।

নোট করুন যে জাভাতে পূর্ণসংখ্যা বিভাগ স্বয়ংক্রিয়ভাবে মেঝেতে মেলে।

a->{                   // Method with 2D int-array as parameter and String return-type
  String r="";         //  Result-String
  for(int l=a.length,  //  Length of the input array
      i=0,j;           //  Index integers
      i<l;i++,         //  Loop (1) over the rows of the input array
          r+="\n")     //  and append a new-line to the result after every iteration
    for(j=0;j<l;       //   Inner loop (2) over the columns of a row
      r+=              //    Append the String with:
         (i>l-2        //      If it's the last row,
         ||a[i][j]/10==a[i+1][j]/10?
                       //      or the current and next rows are equal floored/10:
          " "          //       Use a space
         :             //      Else:
          "_")         //       Use a "_"
        +              //     Plus
         (j++>l-2      //      If it's the last column in the row,
         ||a[i][j-1]/10==a[i][j]/10?
                       //      or the current and next columns are equal floored/10:
          " "          //       Use a space
         :             //      Else:
          "|")         //       Use "|"
    );                 //   End of column loop (2)
                       //  End of row-loop (1) (implicit / single-line body)
  return r;            //  Return the result-String
}                      // End of method

1

আর, 159 বাইট

f=function(m){M=m%/%10;a=cbind(0,t(apply(M,1,diff)));b=rbind(apply(M,2,diff),0);a[!!a]="|";b[!!b]="_";M[]=gsub("0"," ",paste0(a,b));write(t(M),"",ncol(m),,"")}

নিউলাইন এবং ইন্ডেন্টেশন সহ:

f=function(m){
    M=m%/%10
    a=cbind(0,t(apply(M,1,diff))) #row-wise difference
    b=rbind(apply(M,2,diff),0) #column-wise difference
    a[!!a]="|"
    b[!!b]="_"
    M[]=gsub("0"," ",paste0(a,b)) # M[] is a trick to force the result to have the same structure as M
    write(t(M),"",ncol(m),,"")
    }

ম্যাট্রিক্সের পূর্ণসংখ্যা বিভাগ কি সারি-ভিত্তিক এবং কলাম-ভিত্তিক পার্থক্যগুলি পরিমাপ করে এবং যখন নাল দ্বারা প্রতিস্থাপন করে না |এবং_ যথাক্রমে যথাক্রমে , তখন উভয় (ব্যথাহীন, আর এর ভেক্টরাইজেশনের জন্য ধন্যবাদ) এবং ফলাফলগুলি আটকায়।

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

> m=matrix(c(0,10,20,30,40,50,60,70,80,90,0,0,10,10,20,20,30,30,40,40,0,0,0,10,10,10,20,20,20,30,0,0,0,0,10,10,10,10,20,20,0,0,0,0,0,10,10,10,10,10,0,0,0,0,0,0,10,10,10,10,0,0,0,0,0,0,0,10,10,10,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0),byrow=T,ncol=10)
> f(m)
  |_|_|_|_|_|_|_|_|_
    |_  |_ _|_ _|_ _
      |_    |_ _  |_
        |_      |_ _
          |_        
            |_      
              |_    
                |_  
                  |_

> m=matrix(c(5,5,5,5,5,5,5,5,5,5,5,5,10,10,10,10,10,10,10,10,10,5,5,10,15,15,15,15,15,15,15,10,5,5,10,15,20,20,20,20,20,15,10,5,5,10,15,20,25,25,25,20,15,10,5,5,10,15,20,25,30,25,20,15,10,5,5,10,15,20,25,25,25,20,15,10,5,5,10,15,20,20,20,20,20,15,10,5,5,10,15,15,15,15,15,15,15,10,5,5,10,10,10,10,10,10,10,10,10,5,5,5,5,5,5,5,5,5,5,5,5),byrow=T,ncol=11)
> f(m)
   _ _ _ _ _ _ _ _ _  
  |                 | 
  |    _ _ _ _ _    | 
  |   |         |   | 
  |   |    _    |   | 
  |   |   |_|   |   | 
  |   |         |   | 
  |   |_ _ _ _ _|   | 
  |                 | 
  |_ _ _ _ _ _ _ _ _| 

0

পার্ল 5 , 130 126 বাইট

-apপতাকাগুলির জন্য কোডের 2 টি 124 বাইট

push@a,[map 0|$_/10,@F]}{map{say map{($a[$r+1][$c]-$_&&$r<$#a?'_':$").($a[$r][++$c]-$_&&$c<@{$a[0]}?'|':$")}@$_;$c=0;$r++}@a

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

ইনপুট ফর্ম্যাটটি স্থান পৃথক সংখ্যার 2-ডি গ্রিড।

ব্যাখ্যা

এটি কোডের পূর্ববর্তী পুনরাবৃত্তি থেকে।

push@a,[map 0|$_/10,@F]     # read the input, divide it by 10, and store it in a 2-D array
}{                          # end the implicit while loop and start the final block
map{                        # repeat this for each line
  $_=($a[$r+1][$c]-$_&&$r<$#a?'_':$")       # set appropriate characters to output based
     .($a[$r][++$c]-$_&&$c<@{$a[0]}?'|':$") # on the given rules
  for@$_;                                   # repeat for each number on the line
  $c=0;$r++;                         # setup row and column counters for next iteration
  say@$_                             # output this line
}@a
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.