এএসসিআইআই বক্স অঙ্কনটিকে ইউনিকোডে রূপান্তর করুন


16

আমি নির্লজ্জভাবে এমন কোনও কিছুর জন্য অনুরোধ পোস্ট করছি যা আমি আসলে দরকারী মনে করি। কাজটি হ'ল এইভাবে একটি নির্বিচারে আসকি বক্স অঙ্কন

     |
+----+----+
| state A +---+
+---------+   |
              |
         +----v----+
         | state B |
         +---------+

... এবং ইউনিকোড বক্স অঙ্কন অক্ষরগুলি ব্যবহার করে আরও সুন্দর কিছুতে রূপান্তর করুন

     │
╭────┴────╮
│ state A ├───╮
╰─────────╯   │
              │
         ╭────v────╮
         │ state B │
         ╰─────────╯

আরো বিস্তারিত:

  • কেবল রূপান্তর করুন + - | অক্ষর - অন্যান্য অক্ষর অপরিবর্তিত হওয়া উচিত
  • ব্যবহার

    • বক্সের অঙ্কনগুলি হালকা ভার্টিকাল (ইউ + 2502) │ │
    • বাক্স আঁকাগুলি হালকা হরিজন্টাল (ইউ + 2500) ─ ─
    • বাক্স আঁকাগুলি হালকা আর্ক ডাউন এবং সঠিক (ইউ + 256 ডি) ╭
    • বাক্স আঁকাগুলি হালকা আর্ক ডাউন এবং বাম (ইউ + 256 ই) ╮
    • বাক্স আঁকাগুলি হালকা আর্ক আপ এবং বাম দিকে (U + 256F) ╯ ╯
    • বাক্স আঁকাগুলি হালকা আরক আপ এবং সঠিক (U + 2570) ╰ ╰
    • বক্সের অঙ্কনগুলি হালকা বৈকল্পিক এবং বাম (ইউ + 2524) ┤ ┤
    • বাক্সের অঙ্কনগুলি হালকা বৈকল্পিক এবং সঠিক (U + 251C) ├
    • বক্স অঙ্কন হালকা ডাউন এবং হরিজন্টাল (ইউ + 252 সি) ┬
    • বাক্স আঁকাগুলি হালকা এবং হরিজন্টাল (ইউ + 2534) ┴ ┴
    • বক্স অঙ্কন হালকা বৈকল্পিক এবং হরিজন্টাল (ইউ + 253 সি) ┼

    • - সর্বদা ইউ + 2500 দিয়ে প্রতিস্থাপন করা হয়

    • | সর্বদা ইউ + 2502 দিয়ে প্রতিস্থাপন করা হয়
    • + এমন একটি ইউনিকোড অক্ষর দ্বারা প্রতিস্থাপিত হয়েছে যা এর উত্তর, দক্ষিণ, পূর্ব এবং পশ্চিমের চারটি অক্ষরের উপর নির্ভর করে (যদি তারা উপস্থিত থাকে)
    • <এবং> কে + এর উত্তর বা দক্ষিণে উল্লম্ব প্রাচীর বিভাগ হিসাবে বিবেচনা করা হয় (যাতে আপনি একটি বাক্সের উল্লম্ব দেয়ালগুলিতে তীরগুলি শেষ করতে পারেন)
    • ভি এবং কে + এর পূর্ব বা পশ্চিমে যদি অনুভূমিক প্রাচীর বিভাগ হিসাবে গণ্য করা হয় (যাতে আপনি কোনও বাক্সের অনুভূমিক দেয়ালগুলিতে তীরগুলি শেষ করতে পারেন)
    • + যদি উত্তর, দক্ষিণ, পূর্ব বা একটি + এর পশ্চিমে হয় তবে প্রাচীর বিভাগ হিসাবে বিবেচিত হবে (যাতে লাইনগুলি একটি বক্সের কোণার পাশে সংযোগ করতে পারে)

Testcases

+-+     +---+   +---+   |
| +--   |ABC|  -+   |  +++
+-+     ++--+   +---+  +-+
         |
         +--->
  |           +--+
+-v+   +---+  |  |  +-----+
|Hi|  ->   |  +^-+  |world<-----+
+--+   +---+   |    +-----+     |
               |                +--
   |
---+---
   |

হয়ে

╭─╮     ╭───╮   ╭───╮   │
│ ├──   │ABC│  ─┤   │  ╭┴╮
╰─╯     ╰┬──╯   ╰───╯  ╰─╯
         │
         ╰───>
  │           ╭──╮
╭─v╮   ╭───╮  │  │  ╭─────╮
│Hi│  ─>   │  ╰^─╯  │world<─────╮
╰──╯   ╰───╯   │    ╰─────╯     │
               │                ╰──
   │
───┼───
   │

সবচেয়ে কম কোড জয়!


1
"ছেদ" কোথায়, অর্থাত্ যদি +চারদিকে লাইন থাকে?
লিকি নুন

1
আপনি সম্ভবত ইউটিএফ -8 এর পরিবর্তে ইউনিকোড বোঝাচ্ছেন
লুইস মেন্ডো

1
আমরা কিছু পরীক্ষার কেস করতে পারি? বিশেষত প্রান্তের ক্ষেত্রে যেমন দুটি প্রান্ত বা কোণে দুটি বাক্স স্পর্শ করে (বা স্পষ্টকরণ যে এটি কখনই ঘটবে না)।
ট্রাইকোপল্যাক্স

2
এই পরীক্ষার ক্ষেত্রে প্রয়োজনীয় ফলাফলগুলি পোস্ট করে ভাল লাগবে।
manatwork

2
উঘ, আমি কেবল একটি উত্তর রচনা করছিলাম :-(
নীল

উত্তর:


2

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

s=>`
${s}
`.split`
`.map((l,i,a)=>l.replace(/[+-|]/g,(c,j)=>c>`-`?`│`:c>`+`?`─`:`┼┬├╭┤╮??┴?╰?╯`[g(a[i-1][j])+g(l[j-1],1)*2+g(l[j+1],1)*4+g(a[i+1][j])*8]),g=(c,f)=>(f?`+-^v`:`+<>|`).indexOf(c)<0).slice(1,-1).join`
`
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.