ওয়ার্ডেন্টিকনস তৈরি করুন


54

আইডেন্টিকন হ্যাশ মানগুলির ভিজ্যুয়াল চিত্র, যা প্রায়শই জ্যামিতিক আকারের প্রতিসাম্য বিন্যাস থেকে তৈরি। আপনার ডিফল্ট স্ট্যাক এক্সচেঞ্জ অবতার একটি অভিন্ন। এই চ্যালেঞ্জটি হ'ল ওয়ার্ডেন্টিকনস " তৈরি করা , স্বীকৃতিগুলির সহজ পাঠ্য-ভিত্তিক সংস্করণ যা ছোট হাতের অক্ষরের স্ট্রিংগুলিতে প্রয়োগ হয়, অর্থাত্ শব্দ।

চ্যালেঞ্জ

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

এস এর ওয়ারেন্টিকনটি 2*length(S)ফাঁকা ( ), উল্লম্ব বার, ( |) এবং অনুভূমিক বারগুলি ( ) দ্বারা সংযুক্ত পাশের দৈর্ঘ্যের পাঠ্যের একটি বর্গ গ্রিড হবে ।

এস এর ওয়ারেন্টিকন তৈরি করতে, একটি বর্গক্ষেত্র গ্রিড তৈরি করুন যেখানে প্রতিটি কলাম এস এর একটি বর্ণের সাথে মিলিত হয় (সাধারণ বাম থেকে ডান পাঠের ক্রমে) এবং প্রতিটি সারি এস এর বর্ণের সাথে মিলিত হয় (সাধারণ উপরে থেকে নীচে পড়ার ক্রম অনুসারে) )।

উদাহরণস্বরূপ, এস যদি foodআমাদের প্রাথমিক গ্রিডের মতো দেখা যায়

 food
f....
o....
o....
d....

যেখানে .কেবল স্থানধারক।

.গ্রিডে প্রতিটি খালি পয়েন্টের জন্য (প্রতিটি ):

  1. যদি কলামের বর্ণটি বর্ণমালা অনুসারে সারি বর্ণের আগে আসে তবে এর .সাথে প্রতিস্থাপন করুন |
  2. যদি কলাম বর্ণ বর্ণের পরে সারি বর্ণের পরে আসে তবে এর .সাথে প্রতিস্থাপন করুন
  3. কলাম এবং সারি বর্ণগুলি একই হলে, স্থান (স্থান) এর .সাথে প্রতিস্থাপন করুন

foodএই প্রতিটি পদক্ষেপের পরে উদাহরণ এখানে :

  1. এর যোগ করা হচ্ছে |:

     food
    f...|
    o|..|
    o|..|
    d....
    
  2. এর যোগ করা হচ্ছে :

     food
    f.――|
    o|..|
    o|..|
    d―――.
    
  3. এর যোগ করা হচ্ছে :

     food
    f ――|
    o|  |
    o|  |
    d――― 
    

ওয়ারেন্টিকনটি সম্পূর্ণ করতে, শব্দগুলি সমেত অতিরিক্ত অতিরিক্ত সারি এবং কলামটি সরিয়ে ফেলুন

 ――|
|  |
|  |
――― 

তারপরে পুরো জিনিসটি অনুভূমিকভাবে মিরর করুন

 ――||―― 
|  ||  |
|  ||  |
―――  ―――

এবং শেষ পর্যন্ত এটি আবার উল্লম্বভাবে আয়না করুন

 ――||―― 
|  ||  |
|  ||  |
―――  ―――
―――  ―――
|  ||  |
|  ||  |
 ――||―― 

2*length(S)পাশের দৈর্ঘ্যের পাঠ্য গ্রিডের ফলস্বরূপ এটি চূড়ান্ত ওয়ারেন্টিকন।

উদাহরণ

এখানে কিছু অতিরিক্ত ওয়ারেন্টিকন উদাহরণ রয়েছে। নোট করুন যে বিভিন্ন শব্দের অভিন্ন ওয়ারেন্টিকন থাকতে পারে এবং কিছু ওয়ারেন্টিকন সম্পূর্ণরূপে স্পেস দিয়ে তৈরি করা যায় (দুর্ভাগ্যক্রমে মার্কডাউন সেগুলি রেন্ডার করতে চায় না)।

food

 ――||―― 
|  ||  |
|  ||  |
―――  ―――
―――  ―――
|  ||  |
|  ||  |
 ――||―― 

mood

 ――||―― 
|  ||  |
|  ||  |
―――  ―――
―――  ―――
|  ||  |
|  ||  |
 ――||―― 

foof

 ――  ―― 
|  ||  |
|  ||  |
 ――  ―― 
 ――  ―― 
|  ||  |
|  ||  |
 ――  ―― 

fool

 ―――――― 
|  ||  |
|  ||  |
|――  ――|
|――  ――|
|  ||  |
|  ||  |
 ―――――― 

a [2*2 grid of spaces]




to

 || 
―  ―
―  ―
 || 

it

 ―― 
|  |
|  |
 ―― 

tt [4*4 grid of spaces]






abc

 ―――― 
| ―― |
||  ||
||  ||
| ―― |
 ―――― 

and

 ―――― 
| || |
|―  ―|
|―  ―|
| || |
 ―――― 

but

 ―――― 
| || |
|―  ―|
|―  ―|
| || |
 ―――― 

you

 |||| 
― ―― ―
―|  |―
―|  |―
― ―― ―
 |||| 

bob

 ―  ― 
| || |
 ―  ― 
 ―  ― 
| || |
 ―  ― 

cat

 |――| 
― ―― ―
||  ||
||  ||
― ―― ―
 |――| 

cart

 |――――| 
― ―――― ―
|| ―― ||
|||  |||
|||  |||
|| ―― ||
― ―――― ―
 |――――| 

todo

 |||||| 
― |  | ―
―― ―― ――
― |  | ―
― |  | ―
―― ―― ――
― |  | ―
 |||||| 

mice

 |||||| 
― |||| ―
―― ―― ――
――|  |――
――|  |――
―― ―― ――
― |||| ―
 |||||| 

zyxw

 |||||| 
― |||| ―
―― || ――
―――  ―――
―――  ―――
―― || ――
― |||| ―
 |||||| 

banana

 |―|―||―|―| 
― ― ―  ― ― ―
|| | || | ||
― ― ―  ― ― ―
|| | || | ||
― ― ―  ― ― ―
― ― ―  ― ― ―
|| | || | ||
― ― ―  ― ― ―
|| | || | ||
― ― ―  ― ― ―
 |―|―||―|―| 

codegolf

 ―――――――――――――― 
| ||| |||| ||| |
|― ―――――――――― ―|
|―| ―――――――― |―|
|―|| ――||―― ||―|
| ||| |||| ||| |
|―|||― || ―|||―|
|―||―――  ―――||―|
|―||―――  ―――||―|
|―|||― || ―|||―|
| ||| |||| ||| |
|―|| ――||―― ||―|
|―| ―――――――― |―|
|― ―――――――――― ―|
| ||| |||| ||| |
 ―――――――――――――― 

programming

 ―||―||||||||||||―||― 
| || |||||||||||| || |
―― |―||||||||||||―| ――
――― ―|――――  ――――|― ―――
| || |||||||||||| || |
――――― ―――――――――― ―――――
―――|―|  |―||―|  |―|―――
―――|―|  |―||―|  |―|―――
―――|―|―― ―||― ――|―|―――
―――|―|||| || ||||―|―――
――― ―|――――  ――――|― ―――
――― ―|――――  ――――|― ―――
―――|―|||| || ||||―|―――
―――|―|―― ―||― ――|―|―――
―――|―|  |―||―|  |―|―――
―――|―|  |―||―|  |―|―――
――――― ―――――――――― ―――――
| || |||||||||||| || |
――― ―|――――  ――――|― ―――
―― |―||||||||||||―| ――
| || |||||||||||| || |
 ―||―||||||||||||―||― 

abcdefghijklm

 ―――――――――――――――――――――――― 
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
||||||||||||  ||||||||||||
||||||||||||  ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
 ―――――――――――――――――――――――― 

স্কোরিং

এটি , বাইট জেতে সংক্ষিপ্ততম কোড। টাইব্রেকার আগের উত্তরটিতে যায়।

নোট

  • আপনার কোডের অনুভূমিক বারের কোনও উদাহরণ ( ইউটিএফ -8 বাইটস এটি গ্রহণ করে) এর পরিবর্তে 1 বাইট হিসাবে গণ্য হতে পারে। (দশটি উদাহরণ পর্যন্ত)
  • আপনি যদি চান তবে আপনি -অনুভূমিক বারগুলির জায়গায় নিয়মিত ড্যাশ ( ) ব্যবহার করতে পারেন
  • ওয়ার্ডেন্টিকনের লাইনে ট্রেলিং স্পেসগুলি সরিয়ে বা যুক্ত করার অনুমতি নেই (আকারটি অপরিবর্তিত থাকলেও)। এটি একটি সঠিক 2*length(S)পাশের দৈর্ঘ্যের পাঠ্য স্কোয়ার হওয়া উচিত ।
  • আউটপুট ওয়ারেন্টিকন optionচ্ছিকভাবে একটি একক পেছনের নতুন লাইন থাকতে পারে।

আমরা কি অক্ষরের অ্যারে হিসাবে ইনপুট নিতে পারি?
ডাউনওয়েট

@ ডাউনগোট না, আপনার ভাষার জন্য অন্য কোনও উপায় না থাকলে এটি সাধারণ স্ট্রিং হওয়া উচিত।
ক্যালভিনের

2
আপনার জন্য উদাহরণ পেয়েছেন programming, andএবং codegolfকিন্তু আপনি ভুলে গেছি puzzles...
নিল

আপনি একটি লিডারবোর্ড যোগ করতে পারেন?
লিকি নুন

সুতরাং আমরা শেষ পর্যন্ত তা জানতে
পেরেছিলাম

উত্তর:


21

এমএটিএল, 20 15 বাইট

'-| 'jtPht!-ZS)

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

ব্যাখ্যা

'-| '       % String literal defining the replacement characters
j           % Explicitly grab the input as a string
tP          % Duplicate and reverse the input string (row vector of chars)
h           % Horizontally concatenate the input and it's inverse
t!          % Duplicate and turn into a column vector
-           % Subtract the two vectors (converts to ASCII codes) and we automatically
            % broadcast to create a (2N x 2N) matrix where if the column is
            % later in the alphabet (higher ASCII) we get a positive number, if the 
            % column was earlier (lower ASCII) we get a negative number, and if they are
            % the same letter (same ASCII) we get a 0.
ZS          % sign function which yields -1 for negative, 1 for positive, and 0 for 0;
)           % Use this to index (modulus) into the string literal '-| '. MATL uses 1-based
            % indexing so 0 yields ' ', -1 replaced by '|', and 1 replaced by '-'
            % Implicitly display the result

9
: হে ডেনিস!
ডাউনগোট

@ ডাওনগোট এটি এমন একটি বিরল ঘটনা যা এমএটিএল জেলির চেয়ে ছোট!
সোয়েভার

সাইন ফাংশনটি ব্যবহার করার জন্য ভাল ধারণা!
লুইস মেন্ডো

18

জাভা, 329 305 264 259 192 বাইট

ধন্যবাদ:

  • টর্নেরি অপারেটর ব্যবহার করার পরামর্শ দেওয়ার জন্য @ বুলিন্ট।
  • স্ট্রিংটি বিপরীত করার পরামর্শ দেওয়ার জন্য @ ব্যবহারকারী 902383
  • @Frozn এবং প্রতিস্থাপন পরামর্শ জন্য @ user902383 StringBuilderসঙ্গে String

Golfed:

String g(String w){char[]a=w.toCharArray();String s="";for(int i=a.length-1;i>=0;s=s+a[i--]);w+=s;a=w.toCharArray();s="";for(char x:a){for(char y:a)s+=(x>y?'|':x<y?'-':' ');s+='\n';}return s;}

Ungolfed:

String g(String w) {
    char[] a = w.toCharArray();
    String s = "";
    for (int i = a.length - 1; i >= 0; s = s + a[i--]);
    w += s;
    a = w.toCharArray();
    s = "";// To keep the output pure (ie. without the input string as well)
    for (char x : a) {
        for (char y : a)
            s += (x > y ? '|' : x < y ? '-' : ' ');
        s += '\n';
    }
    return s;
}

অবশ্যই একটি মজা। প্রথম প্রয়াসটি একটি ফাংশন ছিল যা ছিল O(n)তবে আমি খুব হতাশ হওয়ার পরে এই সাধারণ ফর্মটির সাথে প্রতিস্থাপন করা শেষ হয়েছিল ।

এবং, পরীক্ষা করতে:

supercalifragilisticexpialidocious
 -|||||||||||||| -|||-||||||||||-  -||||||||||-|||- ||||||||||||||- 
| |||||||||||||||||||-|||||||||| || ||||||||||-||||||||||||||||||| |
-- |-|||||-|||||--|||- |||||||||----||||||||| -|||--|||||-|||||-| --
--- -||----|-------| ---|--|-|--------|-|--|--- |-------|----||- ---
--|| ||||| |||||--|||-||||||||||----||||||||||-|||--||||| ||||| ||--
----- |----|------- ----|---- -------- ----|---- -------|----| -----
------ ---- ------------ ------------------ ------------ ---- ------
---|-|| ||-||| |--|||--|| ||-||------||-|| ||--|||--| |||-|| ||-|---
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
---|-||-- -|-------||---|--|-|--------|-|--|---||-------|- --||-|---
--|| ||||| |||||--|||-||||||||||----||||||||||-|||--||||| ||||| ||--
------ ---- ------------ ------------------ ------------ ---- ------
---|-||--|-| ------||---|--|-|--------|-|--|---||------ |-|--||-|---
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
---|-|| ||-||| |--|||--|| ||-||------||-|| ||--|||--| |||-|| ||-|---
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
 -|||||||||||||| -|||-||||||||||-  -||||||||||-|||- ||||||||||||||- 
|-||||||||||||||| |||-||||||||||-||-||||||||||-||| |||||||||||||||-|
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
----- |----|------- ----|---- -------- ----|---- -------|----| -----
--- -||----|-------| ---|--|-|--------|-|--|--- |-------|----||- ---
||||||||||||||||||||| |||||||||||||||||||||||| |||||||||||||||||||||
-- |-|||||-|||||--|||- |||||||||----||||||||| -|||--|||||-|||||-| --
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
------ ---- ------------ ------------------ ------------ ---- ------
---|-|| ||-||| |--|||--|| ||-||------||-|| ||--|||--| |||-|| ||-|---
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
-----||----|-------|----|-- -|--------|- --|----|-------|----||-----
---|-|||||-|||||--|||--||||| || ---- || |||||--|||--|||||-|||||-|---
----- |----|------- ----|---- -------- ----|---- -------|----| -----
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
---|-|||||-|||||--|||--||||| || ---- || |||||--|||--|||||-|||||-|---
| |||||||||||||||||||-|||||||||| || ||||||||||-||||||||||||||||||| |
 -|||||||||||||| -|||-||||||||||-  -||||||||||-|||- ||||||||||||||- 
 -|||||||||||||| -|||-||||||||||-  -||||||||||-|||- ||||||||||||||- 
| |||||||||||||||||||-|||||||||| || ||||||||||-||||||||||||||||||| |
---|-|||||-|||||--|||--||||| || ---- || |||||--|||--|||||-|||||-|---
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
----- |----|------- ----|---- -------- ----|---- -------|----| -----
---|-|||||-|||||--|||--||||| || ---- || |||||--|||--|||||-|||||-|---
-----||----|-------|----|-- -|--------|- --|----|-------|----||-----
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
---|-|| ||-||| |--|||--|| ||-||------||-|| ||--|||--| |||-|| ||-|---
------ ---- ------------ ------------------ ------------ ---- ------
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
-- |-|||||-|||||--|||- |||||||||----||||||||| -|||--|||||-|||||-| --
||||||||||||||||||||| |||||||||||||||||||||||| |||||||||||||||||||||
--- -||----|-------| ---|--|-|--------|-|--|--- |-------|----||- ---
----- |----|------- ----|---- -------- ----|---- -------|----| -----
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
|-||||||||||||||| |||-||||||||||-||-||||||||||-||| |||||||||||||||-|
 -|||||||||||||| -|||-||||||||||-  -||||||||||-|||- ||||||||||||||- 
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
---|-|| ||-||| |--|||--|| ||-||------||-|| ||--|||--| |||-|| ||-|---
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
---|-||--|-| ------||---|--|-|--------|-|--|---||------ |-|--||-|---
------ ---- ------------ ------------------ ------------ ---- ------
--|| ||||| |||||--|||-||||||||||----||||||||||-|||--||||| ||||| ||--
---|-||-- -|-------||---|--|-|--------|-|--|---||-------|- --||-|---
---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
---|-|| ||-||| |--|||--|| ||-||------||-|| ||--|||--| |||-|| ||-|---
------ ---- ------------ ------------------ ------------ ---- ------
----- |----|------- ----|---- -------- ----|---- -------|----| -----
--|| ||||| |||||--|||-||||||||||----||||||||||-|||--||||| ||||| ||--
--- -||----|-------| ---|--|-|--------|-|--|--- |-------|----||- ---
-- |-|||||-|||||--|||- |||||||||----||||||||| -|||--|||||-|||||-| --
| |||||||||||||||||||-|||||||||| || ||||||||||-||||||||||||||||||| |
 -|||||||||||||| -|||-||||||||||-  -||||||||||-|||- ||||||||||||||-  

2
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! এটি একটি খুব সুন্দর প্রথম উত্তর। :)
অ্যালেক্স এ

1
মনে রাখবেন যে আপনাকে ব্যবহার করতে হবে না \u2015। কাঁচা কোডে অনুভূমিক বার (বা কেবল ড্যাশ) ব্যবহার করা ভাল।
ক্যালভিনের

আমি যথেষ্ট নিশ্চিত যে আপনি যদি উত্তরটির Stringপরিবর্তে সাধারণ ব্যবহার StringBuilderকরেন তবে এটি আরও ছোট হতে পারে ... (যদিও এটি আরও অনেক স্মৃতি নিতে পারে)
লিকি নুন ২

আপনি intএকই লাইনে সমস্ত গুলি ঘোষণা করে কিছু বাইট জিততে পারেন :int i,j,l=m.length();for(i=0;i<l;i++){...
অ্যারন

আমি মনে করি আপনি প্রতিটি লুপের জন্য লুপের জন্য পরিবর্তন করলে আপনি অনেকগুলি সঞ্চয় করতে পারেন। চর নেওয়া ছাড়া আপনার আর কোনও কিছুর জন্য সূচকের দরকার নেই।
হিজরত

11

হাস্কেল, 93 বাইট

r=reverse
h x=unlines$(++)<*>r$zipWith(++)<*>map r$(<$>x).((("- |"!!).fromEnum).).compare<$>x

ব্যবহারের উদাহরণ:

*Main> putStr $ h "food"
 --||-- 
|  ||  |
|  ||  |
---  ---
---  ---
|  ||  |
|  ||  |
 --||-- 

এটি কীভাবে কাজ করে (দ্রষ্টব্য: (f <*> g) xহিসাবে সংজ্ঞায়িত করা হয়েছে f x (g x)):

((("- |"!!).fromEnum).).compare       -- a function that finds the replacement char
                                      -- for two given chars
   (<$>x).(    )<$>x                  -- map this function for every char in the
                                      -- input over each char. Now we have the
                                      -- first quadrant as a list of strings
zipWith(++) <*> map r                 -- append to each line a reversed copy of itself
(++) <*> r                            -- append a reversed copy of the whole list
unlines                               -- turn into a single string

বিকল্প সংস্করণ: "প্রতিস্থাপন এটি" ফাংশন ((("- |"!!).fromEnum).).compareএছাড়াও হিসেবে লেখা যেতে পারে a#b|a<b='-'|a>b='|'|1<2=' 'এবং এর মাধ্যমে বলা (#)একই বাইট গণনা জন্য।


8

জেলি , 16 বাইট

Om©0_'®Ṡị“-| ”j⁷

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

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

Om©0_'®Ṡị“-| ”j⁷  Main link. Argument: s (string)

O                 Ordinal; replace the characters of s with their code points.
 m 0              Concatenate the result with a reversed copy.
  ©               Copy the result to the register.
      ®           Yield the list in the register.
    _'            Perform spawned difference of the character codes.
       Ṡ          Apply the sign function.
        ị“-| ”    Index into that string (indices 1, -1, 0).
              j⁷  Join, separating by linefeeds.

8

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

s=>[...s,s].reverse().join``.replace(/./g,(c,_,t)=>t.replace(/./g,d=>d<c?`|`:d>c?`-`:` `)+`
`)

কোনও ড্যাশ ব্যবহার করা কারণ আমি সাধারণত উইন্ডোতে স্পাইডারমনকি জেএস শেলটি চালাই এবং আমি যদি এটি করি তবে ইউনিকোড কাজ করে না।


উজ্জ্বল ধারণা [...s,s].reverse()+1
ডাউনওয়েট

5

Pyth, 31 30

js_BsM_BMclQsm@" |―"._-FCMd*QQ

পরীক্ষা স্যুট

দুঃখজনকভাবে Qবেশ কয়েকটি দ্বিখণ্ডিত হওয়ার কারণে এসগুলি ছাড়তে পারে না । এখন পর্যন্ত বেশিরভাগ বেসিক অ্যালগরিদম, গণনা অনুভূমিক বারটিকে 1 বাইট হিসাবে গণ্য করে।



1
@ মালটিসেন আমি এফজিআইটি ওয়েইডের বাইরে থাকতে পেরে ক্লান্ত হয়ে পড়েছি;) যাইহোক আমি নিশ্চিত যে এটি আরও কম হতে পারে ...
ফ্রাইআম দ্য এজিগম্যান

5

হাস্কেল, 66 বাইট

u s|e<-s++reverse s=unlines[["- |"!!min(length[a..b])2|a<-e]|b<-e]

4

জাভাস্ক্রিপ্ট ES6, 138 126 123 বাইট

s=>(a=(p=[...s]).map(l=>(b=p.map(i=>i<l?"|":i>l?"-":" ").join``)+[...b].reverse().join``)).concat([...a].reverse()).join`
`

কোডটির বেশিরভাগটি প্রতিফলিত / উল্টানো হয়


4

জে, 26 20 বাইট

6 বাইট ধন্যবাদ @Zgarb

' |-'{~3*@-/~@u:[,|.

পূর্ববর্তী 26-বাইট উত্তর

({&' |-')@*@-/~@(3&u:)@,|.

ডেনিসের উত্তরের মতো একই অ্যালগরিদম ব্যবহার করে।

ব্যবহার:

>> f =: ' |-'{~3*@-/~@u:[,|.
>> f 'food'
<<  --||-- 
   |  ||  |
   |  ||  |
   ---  ---
   ---  ---
   |  ||  |
   |  ||  |
    --||-- 

>> f 'supercalifragilisticexpialidocious'
<<  -|||||||||||||| -|||-||||||||||-  -||||||||||-|||- ||||||||||||||- 
   | |||||||||||||||||||-|||||||||| || ||||||||||-||||||||||||||||||| |
   -- |-|||||-|||||--|||- |||||||||----||||||||| -|||--|||||-|||||-| --
   --- -||----|-------| ---|--|-|--------|-|--|--- |-------|----||- ---
   --|| ||||| |||||--|||-||||||||||----||||||||||-|||--||||| ||||| ||--
   ----- |----|------- ----|---- -------- ----|---- -------|----| -----
   ------ ---- ------------ ------------------ ------------ ---- ------
   ---|-|| ||-||| |--|||--|| ||-||------||-|| ||--|||--| |||-|| ||-|---
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   ---|-||-- -|-------||---|--|-|--------|-|--|---||-------|- --||-|---
   --|| ||||| |||||--|||-||||||||||----||||||||||-|||--||||| ||||| ||--
   ------ ---- ------------ ------------------ ------------ ---- ------
   ---|-||--|-| ------||---|--|-|--------|-|--|---||------ |-|--||-|---
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   ---|-|| ||-||| |--|||--|| ||-||------||-|| ||--|||--| |||-|| ||-|---
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
    -|||||||||||||| -|||-||||||||||-  -||||||||||-|||- ||||||||||||||- 
   |-||||||||||||||| |||-||||||||||-||-||||||||||-||| |||||||||||||||-|
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   ----- |----|------- ----|---- -------- ----|---- -------|----| -----
   --- -||----|-------| ---|--|-|--------|-|--|--- |-------|----||- ---
   ||||||||||||||||||||| |||||||||||||||||||||||| |||||||||||||||||||||
   -- |-|||||-|||||--|||- |||||||||----||||||||| -|||--|||||-|||||-| --
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   ------ ---- ------------ ------------------ ------------ ---- ------
   ---|-|| ||-||| |--|||--|| ||-||------||-|| ||--|||--| |||-|| ||-|---
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   -----||----|-------|----|-- -|--------|- --|----|-------|----||-----
   ---|-|||||-|||||--|||--||||| || ---- || |||||--|||--|||||-|||||-|---
   ----- |----|------- ----|---- -------- ----|---- -------|----| -----
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   ---|-|||||-|||||--|||--||||| || ---- || |||||--|||--|||||-|||||-|---
   | |||||||||||||||||||-|||||||||| || ||||||||||-||||||||||||||||||| |
    -|||||||||||||| -|||-||||||||||-  -||||||||||-|||- ||||||||||||||- 
    -|||||||||||||| -|||-||||||||||-  -||||||||||-|||- ||||||||||||||- 
   | |||||||||||||||||||-|||||||||| || ||||||||||-||||||||||||||||||| |
   ---|-|||||-|||||--|||--||||| || ---- || |||||--|||--|||||-|||||-|---
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   ----- |----|------- ----|---- -------- ----|---- -------|----| -----
   ---|-|||||-|||||--|||--||||| || ---- || |||||--|||--|||||-|||||-|---
   -----||----|-------|----|-- -|--------|- --|----|-------|----||-----
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   ---|-|| ||-||| |--|||--|| ||-||------||-|| ||--|||--| |||-|| ||-|---
   ------ ---- ------------ ------------------ ------------ ---- ------
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   -- |-|||||-|||||--|||- |||||||||----||||||||| -|||--|||||-|||||-| --
   ||||||||||||||||||||| |||||||||||||||||||||||| |||||||||||||||||||||
   --- -||----|-------| ---|--|-|--------|-|--|--- |-------|----||- ---
   ----- |----|------- ----|---- -------- ----|---- -------|----| -----
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   |-||||||||||||||| |||-||||||||||-||-||||||||||-||| |||||||||||||||-|
    -|||||||||||||| -|||-||||||||||-  -||||||||||-|||- ||||||||||||||- 
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   ---|-|| ||-||| |--|||--|| ||-||------||-|| ||--|||--| |||-|| ||-|---
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   ---|-||--|-| ------||---|--|-|--------|-|--|---||------ |-|--||-|---
   ------ ---- ------------ ------------------ ------------ ---- ------
   --|| ||||| |||||--|||-||||||||||----||||||||||-|||--||||| ||||| ||--
   ---|-||-- -|-------||---|--|-|--------|-|--|---||-------|- --||-|---
   ---|-||- |-|| - -- ||-- |- |-| ------ |-| -| --|| -- - ||-| -||-|---
   ---|-|| ||-||| |--|||--|| ||-||------||-|| ||--|||--| |||-|| ||-|---
   ------ ---- ------------ ------------------ ------------ ---- ------
   ----- |----|------- ----|---- -------- ----|---- -------|----| -----
   --|| ||||| |||||--|||-||||||||||----||||||||||-|||--||||| ||||| ||--
   --- -||----|-------| ---|--|-|--------|-|--|--- |-------|----||- ---
   -- |-|||||-|||||--|||- |||||||||----||||||||| -|||--|||||-|||||-| --
   | |||||||||||||||||||-|||||||||| || ||||||||||-||||||||||||||||||| |
    -|||||||||||||| -|||-||||||||||-  -||||||||||-|||- ||||||||||||||- 

( >>যার অর্থ ইনপুট (STDIN), <<আউটপুট অর্থ (STDOUT ))


1
কিছু পুনর্গঠন সহ, আপনি 20 বাইট পেতে পারেন:' |-'{~3*@-/~@u:[,|.
Zgarb

এটি কাঁটাচামচের একটি দুর্দান্ত ব্যবহার ...
লিকি নুন

3

গণিত, 124 110 104 102 বাইট

a=Join[#,Reverse@#]&;#<>"
"&/@a@a@Table[{"|"," ","-"}[[c~Order~d+2]],{c,b=Characters@#},{d,b}]<>""&

বেনামে ফাংশন। ইউনিকোড অক্ষরটি ইউ + এফ 3 সি 7 এর জন্য \[Transpose]


3

জাভাস্ক্রিপ্ট 146 142 132 130 124 বাইট

n=>(e=(a=[...n]).map(b=>(d=a.map(c=>c<b?"|":c>b?"-":" ")).concat([...d].reverse()).join``)).concat([...e].reverse()).join`
`

পরীক্ষা স্যুট:

f=n=>{a=n.split``;e=a.map(b=>a.map(c=>c<b?"|":c>b?"-":" ")).map(d=>d.concat([...d].reverse()).join``);alert(e.concat([...e].reverse()).join`
`)}

f(prompt("Enter string!"));

কমপক্ষে ৫০ বাইট অপসারণ করতে সহায়তা করার জন্য @ হেলকাহোম্বা এবং 3 বাইটের জন্য @ ডাউনগোটকে ধন্যবাদ!


1
আপনি সাধারণত => (...) এর সাথে => {... replace প্রতিস্থাপন করতে পারেন এবং সেই সময়ের কমাতে সমস্ত সেমিকোলন প্রতিস্থাপন করতে পারেন
ডাউনওয়েট

এই উত্তরটি প্রায় ডাওনগোটের মতো, আমি কসম খেয়েছি, আমি তার একটির দিকে নজর দিইনি।
বিলিন্ট

3

আসলে, 53 বাইট

;l╗;∙`♂O♂ii-s3@%" |-"E`MW╜`d@`nkd@Σ'.o@WX'.@s;R+;♂R¥i

আবার, প্রকৃতপক্ষে দুর্বল স্ট্রিং-প্রক্রিয়াজাতকরণের ক্ষমতা হ'ল এটির ক্রিপটোনেট। এটি এখনও জাভার চেয়ে ছোট, তাই আমার কাছে এটি চলছে, যা দুর্দান্ত।

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

ব্যাখ্যা:

কোডটি তিনটি পৃথক অংশে পৃথক করা যায়: অনুবাদ কোড, প্রসেসিং কোড এবং মিররিং কোড। পাঠযোগ্যতার জন্য, আমি প্রতিটি বিভাগ আলাদাভাবে ব্যাখ্যা করতে যাচ্ছি।

অনুবাদ কোড ( sস্ট্যাকের সাথে ইনপুট স্ট্রিং দিয়ে শুরু হবে ):

;l╗;∙`♂O♂ii-s3@%" |-"E`M
;l╗                       push len(s) to reg0 (needed for processing step; we'll call this n)
   ;∙                     cartesian product of s with itself
     `♂O♂ii-s3@%" |-"E`M  map:
      ♂O♂ii                 get a pair of ordinals for the characters
           -s               subtract, signum
             3@%            mod by 3 because element access with negative indices isn't working
                " |-"E      get corresponding string

প্রসেসিং কোড ( n**2নীচে-ডান কোণে বর্ণিত অক্ষরের তালিকার সাথে শুরু হয় ):

W╜`d@`nkd@Σ'.o@WX
W╜`d@`nkd@Σ'.o@W   while loop (while top of stack is truthy):
 ╜`d@`n              remove n characters from the list
       kd@Σ'.o       concatenate those n characters, and append a period
                X  discard the empty list

মিররিং কোড ( n**2+nসময়সীমার সাথে নিউলাইন হিসাবে অভিনয় করে একটি দৈর্ঘ্যের স্ট্রিং দিয়ে শুরু হয় )

'.@s;R+;♂R¥i
'.@s          split on periods
    ;R+       add the reverse list (vertical mirror)
       ;♂R    make a copy of the list with each string reversed (horizontal mirror)
          ¥   concatenate each pair of strings in the two lists (zip-concat)
           i  flatten list
              (implicitly print each stack item, separated by newlines)

3

> <> , 109 বাইট

i:0(?\:}
,[r]l\~l2,[r]rl2
1-:?!\$:}l1-[}
~]\  \
&r\l:?!;1-
?!\$:@@:@$:@@:@)}(}"- |"{?$@{?$o~~$}&1-:&
4.>~ao]2

ইনপুটটি এসটিডিনের মাধ্যমে। এটি অনলাইন চেষ্টা করুন!

Explaination:

ইনপুটটি এটি প্রথম লাইনে পড়ে এবং মিরর করে। ইনপুট জন্য abcd, এই dcbaabcdস্ট্যাক ছেড়ে । প্রতিটি অর্ধেক পরে দিতে আয়না করা হয় abcddcba(লাইন 2)। তারপরে, প্রতিটি উপাদান সদৃশ হয়ে যায় এবং তার নিজস্ব স্ট্যাকের পরিবর্তে (লাইন 3 এবং 4) থাকে। এই প্রক্রিয়াটির পরে, স্ট্যাকের স্ট্যাকটি দেখতে কিছুটা এ জাতীয় দেখাচ্ছে:

aabcddcba  <-- top of the stack of stacks
b
c
d
d
c
b
a          <-- bottom of the stack of stacks

পরিবর্তে প্রতিটি স্ট্যাকের জন্য, সারি মান (স্ট্যাকের নীচে) কলাম মান (স্ট্যাকের শীর্ষ) সাথে তুলনা করা হয়। উপযুক্ত চরিত্রটি নির্বাচন করা হয় - |এবং STDOUT এ লেখা হয়। কলামের মানগুলি তখন ঘোরানো হয় যাতে পরবর্তী কলামটি স্ট্যাকের শীর্ষে থাকে (লাইন 6)।

সমস্ত কলামগুলি বিবেচনা করা হয়ে গেলে, আউটপুট প্রক্রিয়াটি আবার শুরু করার জন্য সারির মানটি বাতিল হয়ে যায়, একটি নতুন লাইন মুদ্রিত হয় এবং কলামের মানগুলি পূর্ববর্তী স্ট্যাক (লাইন 7) এ রেখে দেয় again

]কমান্ড স্ট্যাকগুলি এর স্ট্যাক থেকে পপিং ছাড়াও, বর্তমান স্ট্যাক বের থাকেন তাহলে সেটি শুধুমাত্র অন্যজন পড়ে থাকবে। প্রোগ্রামের শেষ শর্তটি যদি স্ট্যাকটি খালি থাকে তবে সমস্ত সারি প্রক্রিয়াজাত করা হয়েছে (লাইন 5)


3

সি #, 169 150 বাইট

FryAmTheEggman ধন্যবাদ

void f(string s){s+=new string(s.Reverse().ToArray());foreach(char c in s){var t="";foreach(char k in s)t+=c==k?" ":c>k?"|":"-";Console.WriteLine(t);}

ungolfed:

    public static void f(string s)
    {
        s += new string(s.Reverse().ToArray());
        foreach (char c in s)
        {
            var t="";
            foreach (char k in s)
            t+=c==k?" ":c>k?"|":"-";

            Console.WriteLine(t);
        }

    }

আরও গল্ফিং পরামর্শ প্রশংসা


t+=c==k?" ":c>k?"|":"-";কাজ করা উচিত. আমি সি # তে বেশি গল্ফ করিনি, তবে নিয়মিত forলুপগুলি ব্যবহার করা আরও কম হবে এমনটি সম্ভব ।
FryAmTheEggman

এই উত্তরটি একই সমস্যা আমার মূল C # এর উত্তরে করেনি উভয় হয়েছে Reverse()এবং ToArray()অংশ System.Linqতাই এক বিবৃতিতে ব্যবহার প্রয়োজন।
ফাইজে

3

সি # 166 143 বাইট,

using System.Linq;s=>string.Join("\n",(s+=string.Concat(s.Reverse())).Select(x=>s.Aggregate("",(c, y)=>c+"- |"[Math.Sign(x.CompareTo(y))+1])));

ব্যাখ্যা:

using System.Linq;

s=>                                     // Expression bodied member allows for implicit return
  string.Join("\n",                     // Join the generate lines into the final output
    (s+=string.Concat(s.Reverse()))     // Combine s and its reverse inline so aggregate has the whole line
        .Select(x=>                     // For each character in the line run the aggregate to generate its row
            s.Aggregate("",             // Empty string is required to cooerce the output type from char
                (c, y)=>                // c is the generated string so far, y is the next character
                        c+
                                        // Compare the two letters here (row to column)
                                        // Then take the sign of the result to collapse to -1, 0, or 1
                                        // Finally add 1 to line it up with the indexes of the constant string;                                             
                        "- |"[Math.Sign(x.CompareTo(y))+1]
)));

টেস্ট:

Wordenticons

 |||||||||||||||||||||| 
- -|||-|| |--| ||-|||- -
-| |||-||||--||||-||| |-
--- ----|------|---- ---
---| ---|------|--- |---
---|| -||- -- -||- ||---
-||||| |||||||||| |||||-
---||-- |------| --||---
-------- ------ --------
- -|||-|| |--| ||-|||- -
---|| -||- -- -||- ||---
-|||||-||||  ||||-|||||-
-|||||-||||  ||||-|||||-
---|| -||- -- -||- ||---
- -|||-|| |--| ||-|||- -
-------- ------ --------
---||-- |------| --||---
-||||| |||||||||| |||||-
---|| -||- -- -||- ||---
---| ---|------|--- |---
--- ----|------|---- ---
-| |||-||||--||||-||| |-
- -|||-|| |--| ||-|||- -
 |||||||||||||||||||||| 

পদ্ধতিটি কেবল গ্রহণযোগ্য কিনা তা আমি নিশ্চিত ছিলাম না, আমাকে যদি না
জানায়

@ ডাওনগোট সম্পাদনার জন্য ধন্যবাদ, আমি নিশ্চিত ছিলাম যে # টির হাত থেকে রক্ষা পাওয়ার সঠিক পদ্ধতি নেই।
ফাইজে

যা দৃশ্যত কেবল পূর্বরূপে
গণ্ডগোল করেছে

যেহেতু স্ট্রিং প্রয়োগ করে IEnumerable<char>আপনি .Reverse()সরাসরি স্ট্রিং এড়িয়ে .ToCharArray()
স্ট্রিপ

আপনার কাছে পরিবর্তন হতে পারে var a = new[] { '-', ' ', '|' };জন্য var a = "- |"; কারণ আপনার স্ট্রিং উপর ইন্ডেক্স ব্যবহার করতে পারেন
grabthefish


2

ক্লোজার, 171 বাইট

(fn[w](let[f concat r reverse p(map #(f %(r %))(partition(count w)(for[x w y w :let[c(compare x y)]](if(neg? c)\-(if(pos? c)\|\ )))))](run! #(apply println %)(f p(r p)))))

ungolfed:

(fn [w]
  (let [n (count w)
        a (for [x w y w
                :let [c (compare x y)]]
            (if (neg? c)
              \-
              (if (pos? c)
                \|
                \ )))
        p (map #(concat % (reverse %))(partition n a))
        p (concat p (reverse p))]
    (run! #(apply println %) p))))

2

জে, 75 70 বাইট

ডেনিসকে 5 বাইট সংরক্ষণ করা হয়েছে।

3 :'(],.|:@|.@|:)(],|.)''- |''{~]([:-.@*(,~@#$])-(,~@#$(##])@]))3 u:y'

আমি এটি পরে একটি স্পষ্ট ক্রিয়া রূপান্তরিত উপর কাজ করব।


2

অক্টাভা, 39 বাইট

@(x)'| -'(sign([x,y=flip(x)]-[x y]')+2)

একটি বেনামে ফাংশন তৈরি করে যা ব্যবহার করে চালানো যায় ans('string')

ডেমো

ব্যাখ্যা

এই সমাধানটি ইনপুট স্ট্রিং ( x) এবং এটি flip(x)ব্যবহার করে বিপরীতমুখী ( ) একত্রিত করে [x, flip(x)]। বিপরীতটি yউত্তরটি সংক্ষিপ্ত করার জন্য নির্ধারিত হয়েছে [x, y = flip(x)],। আমরা তখন মিশ্রন একই জিনিস একটি কলাম ভেক্টর তৈরি xএবং yএবং TRANSPOSE তোলার [x,y]'। তারপরে আমরা পার্থক্যটি গ্রহণ করব যা স্ট্রিংগুলিতে চিঠিগুলির যে কোনও ASCII উপস্থাপনার মধ্যে পার্থক্যটির 2D অ্যারে তৈরি করতে স্বয়ংক্রিয়ভাবে সম্প্রচারিত হবে। আমরা ব্যবহার signএই পারেন করা -1, 0অথবা 1এবং তারপর যোগ 2বৈধ 1 ভিত্তিক সূচক মান জন্য। এরপরে আমরা প্রাথমিক স্ট্রিংয়ের সূচকে এগুলি ব্যবহার করি '| -'


2

জুলিয়া, 70 বাইট

কোড গল্ফে এটি আমার প্রথম প্রয়াস এবং আমি জুলিয়া এর আগে ব্যবহার করিনি, সুতরাং আপনি কী ভাবেন তা বলুন:

f(s)=join([join([r>c?'|':r<c?'―':' 'for c=s])for r=s*=reverse(s)],"
")

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

Ungolfed:

function wordenticon(word::AbstractString)
    word*=reverse(word)
    join([
        join([
            if r>c
                '|'
            elseif r<c
                '―'
            else
                ' '
            end
            for c in word
        ])
        for r in word]
        ,"\n"
    )
end

আমি মনে করি এটি সম্ভবত আরও খাটো করা যেতে পারে। এই কোডটি ম্যাট্রিক্সে ওয়ার্ডিকনের অক্ষরগুলি সংরক্ষণ করে:

f(s)=[r>c?'|':r<c?'―':' 'for r=s*=reverse(s),c=s]

দুর্ভাগ্যক্রমে, আমি ম্যাট্রিক্স ব্যবহার করে পছন্দসই আউটপুট উত্পাদন করতে পারি না।


হ্যালো, এবং পিপিসিজিতে আপনাকে স্বাগতম! আমাদের সাথে যোগ দেওয়ার জন্য ধন্যবাদ!
NoOneIs এখানে

1

জल्फ, 42 বাইট

হার্ড গল্ফড। আমি সম্ভবত মল্টিক্স বিল্টিনের কথা ভুলে যাচ্ছি যা জल्फের রয়েছে।

ΆΖR~mGiEd+γR~mGiEΨ."| -"hmA-~@ά~@HE_γSSZiζ

এখানে চেষ্টা করুন! এই কোডটি Ψম্যাট্রিক্স মানচিত্রের জন্য একটি তীর ফাংশন ( ) ব্যবহার করে।


1

জাভাস্ক্রিপ্ট, 303 বাইট

function w(o){function r(o){var r=Array.prototype.slice.call(o).reverse();console.log(o.join("")+r.join(""))}var e,n,c,h=[],s=o.length;for(e=0;s>e;e++){for(h.push([]),n=0;s>n;n++)c=o.charCodeAt(n)-o.charCodeAt(e),0===c?h[e].push(" "):0>c?h[e].push("|"):h[e].push("-");r(h[e])}for(e=s-1;e>=0;e--)r(h[e])}

Ungolfed

function w(s) {
    var arr = [],
        l = s.length, r, c, x;
    for (r = 0; r < l; r++) {
        arr.push([]);
        for (c = 0; c < l; c++) {
            x = s.charCodeAt(c) - s.charCodeAt(r);
            if (0 === x) {
                arr[r].push(' ');
            } else if (x<0) {
                arr[r].push('|');
            } else {
                arr[r].push('-');
            }
        }
        out(arr[r]);
    }
    for (r = l - 1; r>=0; r--) {
        out(arr[r]);
    }
    function out(r){
        var rev = Array.prototype.slice.call(r).reverse();
        console.log(r.join('') + rev.join(''));
    }
}

এখানে কোন একমা 2015 অনুরাগ নেই


আলফাতে একটি চিঠি আগে এসেছিল কিনা তা আপনি চেক করতে পারেন, কেবল "a" <"বি" করে
বুলিন্ট

আপনার বিরক্ত করার দরকার নেই var x = 1, শুধু করুন x = 1। কোড গল্ফের মধ্যে কেউই সেরা অনুশীলনগুলিকে মেনে চলার বিষয়ে চিন্তা করে না। :)
জ্যাক্যাম্পবেল

1

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

def f(s):x=[''.join(" -|"[cmp(ord(a),ord(b))]for a in s)for b in s];y=[a+b[::-1]for a,b in zip(x,x)];print'\n'.join(y+y[::-1])

এটি মূলত আমার প্রকৃত সমাধানের বন্দর ।

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

ব্যাখ্যা:

x=[''.join(" -|"[cmp(ord(a),ord(b))]for a in s)for b in s] # get the correct character for each pair of characters in the Cartesian product of s with itself, and concatenate the characters in each line
y=[a+b[::-1]for a,b in zip(x,x)] # mirror each line horizontally
print'\n'.join(y+y[::-1]) # mirror vertically and print

1

পাইথন 3.5, 250 223 175 বাইট:

def H(o):O=ord;G=len(o);p=[[' ―'[O(i)<O(g)],'|'][O(i)>O(g)]for i in o for g in o];u='\n'.join([''.join(p[i:G+i]+p[i:G+i][::-1])for i in range(0,len(p),G)]);print(u+'\n'+u[::-1])

এটি অনলাইন চেষ্টা করুন! (আইডিয়ন) (শেষ দুটি পরীক্ষার কেসগুলি আউটপুটটিতে প্রদর্শিত হবে না কারণ সেগুলি কেবল ফাঁকা লাইন are আমার প্রোগ্রাম তাদের প্রসেস করছে যদিও এটি 10 ​​টি কেস ইনপুট রয়েছে তা নিশ্চিত হওয়া সত্ত্বেও কেবল 8 টি ফলাফল আউটপুট প্রদর্শিত হবে))

বর্ণা followed্য অনুসরণের পরে একটি ব্যাখ্যা:

def H(o):
    O=ord
    G=len(o)
    p=[[' ―'[O(i)<O(g)],'|'][O(i)>O(g)]for i in o for g in o]
    u='\n'.join([''.join(p[i:G+i]+p[i:G+i][::-1])for i in range(0,len(p),G)])
    print(u+'\n'+u[::-1])
  1. p=[[' ―'[O(i)<O(g)],'|'][O(i)>O(g)]for i in o for g in o]

    একটি তালিকা তৈরি করুন p, যেখানে |কলাম বর্ণের ইউনিকোড পয়েন্ট মান সারি বর্ণের মানের তুলনায় কম যুক্ত হলে একটি যুক্ত করা হবে, কলাম বর্ণের ইউনিকোড পয়েন্ট মান সারি বর্ণের মানের চেয়ে বেশি হলে, বা যদি উভয়ই যুক্ত হয় মান সমান।

  2. u='\n'.join([''.join(p[i:G+i]+p[i:G+i][::-1])for i in range(0,len(p),G)])

    জোড় স্ট্রিং সেগমেন্টগুলিতে বিভক্ত uহয়ে তালিকা থেকে pএকে একে সামনে এবং পিছনে উভয় অক্ষরের সংখ্যার সমন্বয়যুক্ত স্ট্রিং সেগমেন্টগুলিতে তালিকা তৈরি করে একটি নতুন লাইন যুক্ত স্ট্রিং তৈরি করুন যার ফলস্বরূপ প্রতিটি ক্ষেত্রে ইনপুটটিতে কতগুলি অক্ষর থাকবে তার দ্বিগুণ দৈর্ঘ্য হবে of এটি আপনার ওয়ারেন্ডেন্টিকনের উপরের অর্ধেক। সুতরাং, আপনার ইনপুট সত্ত্বার ক্ষেত্রে food, এটি ফিরে আসবে:

     ――||―― 
    |  ||  |
    |  ||  |
    ―――  ―――
    
  3. print(u+'\n'+u[::-1])

    অবশেষে, আউটপুট uএকটি নতুন লাইন অনুসরণ করে এবং তারপরে uদ্বিতীয়ার্ধের জন্য প্রথমার্ধকে উল্লম্বভাবে মিরর করা যায়। এটি আপনার সম্পন্ন ওয়ারেন্টিকন যা পরীক্ষার ক্ষেত্রে foodশেষ পর্যন্ত হবে:

     ――||―― 
    |  ||  |
    |  ||  |
    ―――  ―――
    ―――  ―――
    |  ||  |
    |  ||  |
     ――||―― 
    

0

আর , 101 বাইট

আমি যেহেতু 101 বাইট ব্যবহার করছি (যা আমি মনে করি তার থেকে ভাল দেখাচ্ছে -)।

function(s)write(c("|"," ","―")[sign(outer(g<-c(r<-utf8ToInt(s),rev(r)),g,"-"))+2],"",2*nchar(s),,"")

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

আমি আশ্চর্য হয়েছি যে এর আগে কোনও আর উত্তর ছিল না যেহেতু আমরা একটি stringসমস্যা থাকা সত্ত্বেও যথেষ্ট প্রতিযোগিতামূলক উত্তর পেতে প্রতিসম এবং আর এর ম্যাট্রিকগুলি কাজে লাগাতে পারি ।

অব্যক্ত ব্যাখ্যা:

function(s){
 r <- utf8ToInt(s)               # turn to vector of ints (charcodes)
 g <- c(r, rev(r))               # concatenate r and its reverse
 idx <- sign(outer(g,g,"-")) + 2 # compute all differences and their signs.
                                 # -1=>less than, 0=>equal, +1=>greater than
                                 # add 2 to make them 1-based indices into the vector
 write(c("|"," ","―")[idx],"",2*nchar(s),,"")
     # write the vector of characters to stdout "" with line width 2*nchar(s)
     # and no separator
}

0

সি (জিসিসি) , 202 বাইট

f(c,i,j,s,t,a,v)char*c,*v;{v=malloc((a=strlen(c)*2)*a);for(j=0;t=c[j];j++)for(i=0;s=c[i];i++)v[j*a+i]=v[j*a+a+~i]=v[a*(a+~j)+i]=v[a*(a+~j)+a+~i]="- |"[(s<t)-(s>t)+1];for(;*v;v+=a)write(1,v,a),puts("");}

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

প্রতিটি চরিত্রের মধ্য দিয়ে লুপিং করে কাজ করে, তারপরে ফলাফলের চরিত্রটি (এবং এর প্রতিচ্ছবি) আপডেট করে।


0

05 এ বি 1 ই (উত্তরাধিকার) , 20 22 21 বাইট

Ǹ˜ãε… |-s`.Sè}sgôJ∞∊

একক-চর ইনপুটগুলির জন্য বাগ-ফিক্স হিসাবে +2 বাইটস ... এর পরিবর্তে
নিয়মিত ড্যাশ ব্যবহার করে -1 বাইট , যেহেতু আমরা তার পরিবর্তে ব্যবহার করতে পারি (যেহেতু অভিধানের স্ট্রিং হিসাবে ভুলভাবে কাজ করবে)-… |-"… |―"… |―

05AB1E এর উত্তরাধিকার সংস্করণ ব্যবহার করে, যেহেতু এটি মিরর করার সময় স্পষ্টভাবে নিউলাইন দ্বারা যুক্ত হয়, যার »নতুন সংস্করণে অতিরিক্ত স্পষ্ট প্রয়োজন ।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

Ç             # Push the unicode values of the characters of the (implicit) input-string
 ¸˜           # Wrap this into a list and flatten (workaround for single-char inputs,
              #  since `Ç` will then result in a single value instead of a list of values..)
   ã          # Create each possible pair
ε             # Map each pair to:
  |-         #  Push string " |-" (note: `… |―` cannot be used here, since it will
              #   incorrectly act as a dictionary string)
 s            #  Swap to take the current map-pair
  `           #  Push both values seperated to the stack
   .S         #  Compare them with each other (-1 if a<b; 0 if a==b; 1 if a>b)
 è            #  Use it to index into the string " |―" (-1 will wraparound to the tail)
      }s      # After the map: swap to get the (implicit) input-string again
        gô    # Get its length, and split the mapped list into parts of that size
          J   # Join each character in the inner lists together to a string
           ∞∊ # Mirror both horizontally and vertically (which implicitly joins by newlines
              #  in the legacy version of 05AB1E)
              # (and output the result implicitly)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.