ASCII শিল্প প্রতিবিম্ব


26

এই চ্যালেঞ্জে আপনাকে একটি পাঠ্য ব্লক দেওয়া হবে এবং আপনাকে পাঠ্যের প্রতিচ্ছবি সম্পাদন করতে হবে।

ইনপুট:

  1. প্রতিবিম্বিত করার জন্য একটি স্ট্রিং। পাঠ্যটি এমন অ্যারে হিসাবে সরবরাহ করা যাবে না যার উপাদানগুলি পাঠ্যের লাইন। উদাহরণস্বরূপ, "ab\ncd"এবং ['a','b','\n','c','d']অনুমোদিত, কিন্তু হয় ['ab','cd']বা [['a','b'],['c','d']]হয় না। আপনি ধরে নিতে পারেন যে সমস্ত লাইনটিতে একই সংখ্যক অক্ষর রয়েছে (যেখানে প্রয়োজন যেখানে সাদা স্থান দিয়ে প্যাড করা হয়েছে)।
  2. একটি বুলিয়ান যেখানে TrueY প্রতিবিম্বকে Falseনির্দেশ করে এবং এক্স প্রতিবিম্বকে নির্দেশ করে

দুটি ইনপুট যে কোনও ক্রমে পাস করা যেতে পারে।

আউটপুট:

প্রতিফলিত স্ট্রিং। চরিত্রগুলি পরিবর্তন হয় না, কেবল তাদের অবস্থান। ফলস্বরূপ ইমেজ ব্লকটি উপরের বামে সারিবদ্ধ হওয়া উচিত (প্রথম সারিতে এবং কলামটিতে অবশ্যই একটি সাদা-বর্ণচিহ্ন থাকা উচিত)। ট্রেলিং হোয়াইটস্পেস (যে কোনও লাইনে) অনুমোদিত is

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

False
  o /
--|/
  |
 / \

/ o
 /|--
  |
 \ /

True
  o /
--|/
  |
 / \

 / \
  |
--|/
  o /

True
text

text

False
text

txet

True
P
P
C
G

G
C
P
P

False
P
P
C
G

P
P
C
G

True
abcde
fghij
kl mn
opqrs
tuvwx

tuvwx
opqrs
kl mn
fghij
abcde

এটি একটি , সুতরাং আপনার প্রিয় ভাষায় সংক্ষিপ্ত উত্তর দিয়ে উত্তর দিন!


2
আমরা যে কোনও বিন্যাসে (যেমন। 1এবং 0) বুলেটিন নিতে পারি বা আমাদের অবশ্যই ব্যবহার করতে হবে Trueএবং False?
টুকসক্রাফ্টিং

5
অ্যারেতে প্রতিটি লাইন রাখার অনুমতি নেই কিছু ভাষার জন্য একমাত্র উপায়, যদি তারা একাধিক স্ট্রিংকে অনুমতি না দেয়
লুইস মেন্ডো

7
@ লুইসেমেন্ডো যদি কোনও ভাষার প্রাকৃতিক স্ট্রিং উপস্থাপনায় একটি না থাকতে পারে তবে \nআমি যতদূর বলতে পারি যে এটি কোনও স্ট্রিং প্রতিনিধিত্ব নয়।
ফ্যাটালাইজ করুন

2
আপনি কি বুলিয়ান ইনপুটটি কিছুটা পরিষ্কার করতে পারবেন? আমি কি কোনও দুটি মান বেছে নিতে পারি যার মধ্যে একটি মিথ্যা এবং অন্যটি সত্যবাদী এবং সেগুলি দিয়ে আমার প্রোগ্রামটিকে কাজ করে তুলি; বা আমার প্রোগ্রামে সমস্ত মিথ্যা মানগুলি একভাবে এবং সমস্ত সত্যবাদী মানগুলি অন্যভাবে পরিচালনা করতে হবে ?
লিন

2
এছাড়াও, অনেকগুলি উত্তর ইনপুটটি আয়তক্ষেত্রাকার হিসাবে ধরেছে বলে মনে হচ্ছে (স্পেস ব্যবহার করে সমস্ত লাইন একই দৈর্ঘ্যে প্যাড করা হবে)। এই ধারণা কি ঠিক আছে? যেভাবেই হোক না কেন, আপনাকে প্রশ্নে এটি পরিষ্কার করা উচিত।
লিন

উত্তর:


11

সি #, 168 144 141 120 বাইট

using System.Linq;i=>y=>string.Join("\n",y?i.Split('\n').Reverse():i.Split('\n').Select(x=>string.Concat(x.Reverse())));

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

হালনাগাদ:

নতুন সংস্করণটি একটি বেনামে ল্যাম্বদা এবং মোট 21 বাইট সংরক্ষণের জন্য কারিগরি ব্যবহার করে। এটি ব্যবহারের স্থান পরিবর্তন করে f("text")(false)যেখানে চেনা অনামী ফাংশন।

Ungolfed:

using System.Linq;

//Using currying to save one byte
input => IsYReflect =>
         //Lambda makes return implicit
         string.Join("\n", IsYReflect
            //Y Reflect, just need to reverse the array
            ? input.Split('\n').Reverse()
            //X Reflect, reverse each line into an IEnumerable
            : input.Split('\n').Select(x => string.Concat(x.Reverse())));

স্কট কায়ে এমন একটি মন্তব্য রেখেছিলেন যা সেই সময় থেকে সরিয়ে দেওয়া হয়েছে যা আমাকে নতুন কিছু চেষ্টা করার চেষ্টা করেছিল এবং 24 বাইট ছাঁটাই করে দেয়।
জাস্টিনএম - মনিকা

সি # 6 এক্সপ্রেশন বডিড ফাংশনটি আরও 3 টি বাইট সংরক্ষণ করে
জাস্টিনএম - মনিকা পুনরায় ইনস্টল করুন


9

ব্রেইনফাক, 143 140 131 বাইট

,[,[---------->+<[>-]>[->]<,]<[[<]>[++++++++++.>]++++++++++.<[<]<]],[---------->+<[++++++++++>-]>[-<<[.<]++++++++++.[>]>>]<,]<[.<]

বেট এস সি #।

ব্রেইনফাকের পক্ষে চ্যালেঞ্জটি যথেষ্ট সহজ ছিল এবং আমি সম্ভবত এটি করার জন্য যথেষ্ট ক্লান্ত হয়ে পড়েছিলাম।

0x00ইনপুট শুরুর আগে বুলিয়ানকে (মিথ্যা) বা অন্য কোনও (সত্যবাদী) বাইট হিসাবে নেয় , তারপরে একটি আয়তক্ষেত্র-প্যাডযুক্ত স্ট্রিং।

ওয়াই ফ্লিপের জন্য একটি পিছনে থাকা নতুন লাইনের আউটপুট দেয় এবং এক্স ফ্লিপের জন্য কিছুই নেই।

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

কোডটির 10 +বা -'গুলি সহ অনেকগুলি ব্লক রয়েছে ; এগুলি সম্ভবত হ্রাস করা যেতে পারে।

মন্তব্য করা সংস্করণ

, get mode
[ check truthy input
    ,[ loop thru input
        ---------- subtract newline
        >+ set flag
        < go back to char
        [ was not newline
            > move to flag
            - reset flag
        ]
        > move to flag or one past flag
        [ hit flag; was newline
            - reset flag
            > skip a cell
        ]
        < go to next position
        , read next input
    ]
    < find end of line
    [ loop thru lines
        [<]> find start of line
        [ loop thru line
            ++++++++++ add newline back
            . print this cell
            > go to next cell
        ]
        ++++++++++ change to newline
        . print newline
        <[<]< find end of previous line
    ]
]
,[ loop thru any input left
    ---------- subtract newline
    >+ set flag
    < go back to char
    [ was not newline
        ++++++++++ add newline back
        > move to flag
        - reset flag
    ]
    > move to flag or one past flag
    [ hit flag; was newline
        - clear flag
        < go back to char
        < go back to line chars
        [ loop thru line
            . print this cell
            < go to previous cell
        ]
        ++++++++++. print newline
        [>]>> find empty cell
    ]
    < go to next position
    , read next input
]
< go to line
[ loop thru line
    . print this cell
    < go to previous cell
]

6

32-বিট x86 মেশিন কোড, 76 বাইট

হেক্সে:

31c031c9495789f7fcf2aef7d15192b00a89f7f2ae5829f7f7f787f95f4b89c3741287d94b534b8a041eaa75f95b01dea4e2f2c348f7e101c6b00a5651f3a4595e29ce4f4b0f44c3aa75f0c3

ইনপুট:: EBXদিকনির্দেশ পতাকা (0/1) ESI: ইনপুট স্ট্রিং EDI,: আউটপুট বাফার। ইনপুটটি আয়তক্ষেত্রাকার হতে হবে।

0:  31 c0               xor eax,eax         ;EAX=0
2:  31 c9               xor ecx,ecx         
4:  49                  dec ecx             ;ECX=(uint)-1
5:  57                  push edi            
6:  89 f7               mov edi,esi         
8:  fc                  cld                 
9:  f2 ae               repne scasb         ;Scan input string for terminating NULL
b:  f7 d1               not ecx             ;ECX==<input string length (including NULL)>
d:  51                  push ecx            
e:  92                  xchg edx,eax        ;EDX=0
f:  b0 0a               mov al,0x0a         ;'\n'
11: 89 f7               mov edi,esi         
13: f2 ae               repne scasb         ;Scan input string for the first newline
15: 58                  pop eax             ;EAX==<input string length (including NULL)>
16: 29 f7               sub edi,esi         ;EDI==<single line length (including '\n')>
18: f7 f7               div edi             ;EAX==<# of lines>
1a: 87 f9               xchg ecx,edi        ;ECX=EDI
1c: 5f                  pop edi             ;EDI=<dest buffer>
1d: 4b                  dec ebx             ;Test input flag (0/1)
1e: 89 c3               mov ebx,eax         ;EBX=<# of lines>
20: 74 12               je _vertical        
22: 87 d9               xchg ecx,ebx        ;Horisontal flip, exchange ECX & EBX so we can use LOOP
24: 4b                  dec ebx             ;EBX=<single line length (excluding '\n')>
_hfouter:
25: 53                  push ebx            
_hfinner:
26: 4b                  dec ebx             ;Decrement inner loop counter
27: 8a 04 1e            mov al,[esi+ebx]    ;AL=ESI[EBX]
2a: aa                  stosb               ;*EDI++=AL
2b: 75 f9               jne _hfinner        ;EBX==0 => break
2d: 5b                  pop ebx             
2e: 01 de               add esi,ebx         ;*ESI=='\n' (\0 on the last line)
30: a4                  movsb               ;*EDI++=*ESI++, ESI now points to the next line
31: e2 f2               loop _hfouter       ;--ECX==0 => break
33: c3                  ret                 ;Nothing more to do here
_vertical:
34: 48                  dec eax             ;# of strings less one
35: f7 e1               mul ecx             ;Line length (including '\n')
37: 01 c6               add esi,eax         ;ESI+=ECX*(EAX-1), ESI now points to the beginning of the last line
39: b0 0a               mov al,0x0a         ;'\n'
_vfloop:
3b: 56                  push esi            
3c: 51                  push ecx            
3d: f3 a4               rep movsb           ;Copy the whole line to the output including newline/NULL at the end
3f: 59                  pop ecx             
40: 5e                  pop esi             
41: 29 ce               sub esi,ecx         ;Set ESI to the beginning of the previous line
43: 4f                  dec edi             ;*EDI=='\n' (0 on the first iteration), should overwrite it with correct value
44: 4b                  dec ebx             ;Decrement loop counter
45: 0f 44 c3            cmove eax,ebx       ;if (EBX==0) EAX=EBX, this clears EAX on the last iteration
48: aa                  stosb               ;*EDI++=EBX?'\n':0
49: 75 f0               jne _vfloop         ;EBX==0 => break
4b: c3                  ret                 

5

হাস্কেল, 51 49 45 বাইট

r=reverse
f b=unlines.last(map r:[r|b]).lines

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

f True "abc\ndef\nghi\njkl"
"jkl\nghi\ndef\nabc\n"

f False "abc\ndef\nghi\njkl"
"cba\nfed\nihg\nlkj\n"

লাইনে বিভক্ত করুন, হয় লাইনগুলি (সত্য) বিপরীত করুন বা প্রতিটি লাইনকে বিপরীত করুন (মিথ্যা) এবং আবার একটি একক স্ট্রিংয়ে যোগ দিন। Trueইনপুট ক্ষেত্রে, map r:[r|b]দুটি ফাংশন [<reverse each line>, <reverse lines>]এবং একটি Falseইনপুট জন্য একটি ফাংশন সহ একটি তালিকা [<reverse each line>]lastএই তালিকার শেষ উপাদানটি বেছে নিয়েছে।



4

পাইথন, 56 বাইট

lambda s,r:'\n'.join(s[::2*bool(r)-1].split('\n')[::-1])

একটি স্ট্রিং sএবং কোনও সত্য / মিথ্যা মান সহ কল ​​করুন r


এটি সেভাবে কাজ করে না। আপনার প্রোগ্রামটি হয় কোনও সত্যবাদী মান নিতে হবে, বা কেবল নিতে হবে True, যা হতে পারে 1। আপনি ইনপুটকে কেবল 0বা সীমাবদ্ধ করতে পারবেন না 2
mbomb007

হ্যাঁ, আমি আমার উত্তরের মাধ্যমে ভাবিনি। @ mbomb007 এখানে সঠিক, এটি আপনার ভাষার জন্য কোনও সত্য / মিথ্যা মানের জন্য কাজ করা প্রয়োজন।
নাথান মেরিল

@ নাথানমেরিল কেবল একটি এফওয়াইআই, আপনি ইনপুটটি কোনও অতিরিক্ত তথ্য এনকোড না করে বলে তিনটি বাইট উত্তরের মতো জিনিস এড়াতে পারবেন। এটি দ্বিতীয় উত্তরটিকে (যা আমি বরং চতুর বলে মনে করেছি) অনুমতি দিত, তবে অবশ্যই আপনি যা দেখতে চান তা আপনার হাতে।
FryAmTheEggman

এই উত্তরটি অবৈধ ওপি অনুযায়ী যেমন আউটপুট এই (অর্থাত স্থান প্রথম লাইন দৈর্ঘ্যের padded) পরীক্ষা কেস # 1 যখন এটি পরিবর্তে outputting হবে কি যে পরীক্ষা ক্ষেত্রে জন্য পোস্টে দেওয়া হয় না।
আর কাপ,

4

পাইথন 3.5, 61 বাইট:

lambda f,j:[print(r[::-1])for r in j[::[1,-1][f]].split('\n')]

একটি সাধারণ বেনাম ল্যাম্বদা ফাংশন যা আয়তক্ষেত্রাকার ইনপুট ধরে নেয়। প্রথমে ফাংশনটির নামকরণ করে এটি কল করুন এবং তারপরে এটিকে আবৃত করে কল করুন print()। অন্য কথায়, যদি ফাংশন নামকরণ হয়েছে H, এটা পছন্দ কল print(H(<Bool value>, <String>)), যেখানে <Bool Value>কোনো সত্য বা মিথ্যা মান (অর্থাৎ 0/1, true/false, ইত্যাদি) এবং <String>ইনপুট স্ট্রিং।

এটি অ্যাকশন দেখুন! (Repl.it)

এখানে একই দৈর্ঘ্যের আরও একটি সংস্করণ রয়েছে যা আয়তক্ষেত্রাকার ইনপুটও ধরে নিয়েছে, তবে এবার একটি নামকৃত কার্য, অর্থাৎ আপনাকে প্রথমে এটির নাম রাখতে হবে না বা এটি ভিতরে আবৃত করতে হবে না print():

def J(f,j):[print(r[::-1])for r in j[::[1,-1][f]].split('\n')]

কেবল এটিকে পছন্দ করুন J(<Bool Value>,<String>)

এ্যাকশন এ দেখুন! (Repl.it)

যাইহোক, আমি সেখানে থামার এক নই। যদিও আমাদের আয়তক্ষেত্রাকার ইনপুট অনুমান করার অনুমতি দেওয়া হয়েছে, আমি এমন একটি সংস্করণও তৈরি করেছি যা এই ধরণের ইনপুট ধরে না । সুতরাং, এটি সর্বাধিক দৈর্ঘ্যের সাথে রেখার উপর ভিত্তি করে সমস্ত লাইনকে একই দৈর্ঘ্যে স্পেস-প্যাড করবে এবং কেবল যদি <Bool>ইনপুট হয় False, কেবলমাত্র একটি এক্স-প্রতিবিম্বনের ফলে স্ট্রিংটি "উল্টানো" হবে। এখন, আরও অ্যাডো ছাড়াই, এখানে একটি সাধারণ ফাংশন আকারে 134 129 বাইট দৈর্ঘ্য সহ অ-আয়তক্ষেত্রাকার অনুমান সংস্করণটি রয়েছে :

def J(f,j):print('\n'.join([' '*((max([len(i)for i in j.split('\n')])-len(r))*(not f))+r[::-1]for r in j[::[1,-1][f]].split('\n')]))

এই শেষটি একশন দেখুন! (Repl.it)


3

এমএটিএল , 11 বাইট

10&Ybc2i-&P

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

প্রথম ইনপুট একাধিক লাইন স্ট্রিং। এমএটিএল যেহেতু লাইনফিড \nহিসাবে স্বীকৃতি দেয় না, তাই মাল্টলাইন স্ট্রিংটি সাবস্ট্রিংগুলি বা স্বতন্ত্র অক্ষরগুলির সংমিশ্রণ হিসাবে সংজ্ঞায়িত করা উচিত এবং 10(লাইন ফিডের জন্য এএসসিআইআই, যা একটি চরিত্র হিসাবে ব্যাখ্যা করা হয়)। এমএটিএল-তে সংবিধান হ'ল [... ...]বা [..., ...](কমাগুলি alচ্ছিক )। উদাহরণস্বরূপ, ইনপুট নিম্নরূপ হতে পারে (একটি স্ট্রিং, লাইনফিড এবং অন্য স্ট্রিংয়ের সংমিশ্রণ):

['first line' 10 'second']

বা সমতুল্য (স্বতন্ত্র চরিত্রের বোঝা)

['f' 'i' 'r' 's' 't' ' ' 'l' 'i' 'n' 'e' 10 's' 'e' 'c' 'o' 'n' 'd']

বা (কমা দিয়ে একই)

['f', 'i', 'r', 's', 't', ' ', 'l', 'i', 'n', 'e', 10, 's', 'e', 'c', 'o', 'n', 'd']

দ্বিতীয় ইনপুট হিসাবে প্রবেশ করা যাবে 1/ 0বা equivalently যেমন T/ Fজন্য true/ falseযথাক্রমে।

ব্যাখ্যা

10     % Push 10 (ASCII for linefeed)
&Yb    % Take input string implicitly. Split at linefeeds. Gives a cell array
c      % Convert to a 2D char array, right-padding with spaces
i~Q    % Input Boolean value. Negate and add 1. Gives 1/2 for true/false resp.
&P     % Flip along that dimension (1: vertically; 2: horizontally). Display implicitly


1
@ ফ্যাটালাইজ হ'ল এটি কীভাবে এমএটিএল এবং ম্যাটল্যাব ইনপুটটি পড়ে। প্রতিটি লাইন একটি আলাদা ইনপুট
লুইস মেন্ডো

2

ব্র্যাচল্যাগ , 26 24 16 বাইট

t1,?h@nr~@nw|hrw

স্ট্রিং এবং বুলিয়ান 1বা 0উদাহরণস্বরূপ একটি তালিকা আশা করে

run_from_file('code.bl',["P
|    P
|    C
|    G":1]).

ব্যাখ্যা

t1,              If the tail of the input is 1
   ?h@n              Split the string on \n
       r             Reverse the resulting list
        ~@n          Join the list of strings with \n
           w         Write to STDOUT
|                Or
hr                   Reverse the string
  w                  Write to STDOUT


1

বাশ + সাধারণ লিনাক্স ইউটিস, 16

(($1))&&tac||rev

বুলিয়ান মান (শূন্য বা শূন্য নয়) কমান্ড-লাইন প্যারামিটার হিসাবে পাস করেছে। STDIN / STDOUT এর মাধ্যমে পাঠ্য ব্লকের I / O। ধরে নিন যে সমস্ত রেখাগুলি একই দৈর্ঘ্য, মন্তব্যে নির্দেশিত হিসাবে ।


1

সি (আনসি), 193 বাইট

Golfed:

i,y,x;main(g,o,p)char**o;{p=(o[1][0]=='t');while(o[2][++i]!='\n');p?y=(strlen(o[2])-1)/i:(x=i);do do printf("%c",o[2][x+y*i]);while(p?++x<i:x-->0);while(p?x=0,y--:++y<(x=i-1,strlen(o[2])/i));}

Ungolfed:

i,y,x;
main(g,o,p)char**o;{
    p=(o[1][0]=='t');
    while(o[2][++i]!='\n'); 
    p?y=(strlen(o[2])-1)/i:(x=i);
    do{
        do{
            printf("%c",o[2][x+y*i]);
        }while(p?++x<i:x-->0);
    }while(p?x=0,y--:++y<(x=i-1,strlen(o[2])/i));
}

ব্যবহার:

সংকলন যুক্তি:

gcc -O3 -ansi

উদাহরণ ইনপুট:

নিউজপ্যাসের সীসা এবং ট্রেলযুক্ত স্ট্রিংয়ের পরে মিথ্যা সত্যের জন্য ইনপুট টি না হয় না।

./reverseString t "
truck
ducky
quack
moose
"

উদাহরণ আউটপুট:

moose
quack
ducky
truck

1

জাভাস্ক্রিপ্ট (ES 6) 83 বাইট

(c,b)=>(p=c.split`
`)&&(b?p.reverse():p.map(a=>a.split``.reverse().join``)).join`
`

f=(c,b)=>(p=c.split`
`)&&(b?p.reverse():p.map(a=>a.split``.reverse().join``)).join`
`

f("abcde\nfghij\nkl mn\nopqrs\ntuvwx",1)

c="
  o / 
--|/
  | 
 / \
";

f(c,1)
" / \
   | 
 --|/
   o / "

f(c,0)
"/ o  
  /|--
   |  
  \ / "

আমি f(c,0)যখন চেষ্টা করি তখন একটি আলাদা আউটপুট দেখি - সম্ভবত আপনার cসঠিক জায়গাগুলিতে সমস্ত স্থান নেই।
নিল

প্রথম "ও /" পরে কি পিছনের সাদা স্থানটি গুরুত্বপূর্ণ?
পিটার মর্টেনসেন

@ পিটারমোরটেনসেন ও নীল: আমি নিশ্চিত যে এটি আমার অনুলিপি-পেস্টিং থেকে এসেছে। JavaScript কনসোল প্রথম লাইনে আপনার শুরুতে "রাখে এবং তাই আমি এটি একটি বিট যখন আমি এখানে আটকানো ফরম্যাট সবকিছু বর্ণন ভয়ানক তোলে খুব সম্ভবত আমি একটি বাগ খুব
চার্লি Wynn


1

জে, 29 বাইট

}:@,@(,.&LF@{|."1,:|.)>@cutLF

এলএইচএস ইনপুট হ'ল বুলিয়ান যেখানে 0 টি মিথ্যা এবং 1 টি সত্য। আরএইচএস হ'ল স্ট্রিং ইনপুট।


1

জাভাস্ক্রিপ্ট (ES6), 76

s=>b=>(s=s.split`
`,b?s.reverse():s.map(r=>[...r].reverse().join``)).join`
`

F=s=>b=>(s=s.split`
`,b?s.reverse():s.map(r=>[...r].reverse().join``)).join`
`

function test()
{
  var rows=I.value, r
  
  // Trim trailing newlines, pad to blank
  rows=rows.split('\n')
  while(!(r=rows.pop()));
  rows.push(r)
  var maxlen=Math.max(...rows.map(r=>r.length))
  rows=rows.map(r=>r+' '.repeat(maxlen-r.length)).join`\n`

  var t1=F(rows)(false)
  var t2=F(rows)(true)
  
  O.textContent = 'False\n'+t1+'\n\nTrue\n'+t2
}

test()
#I { width:50%; height:10em }
<textarea id=I>
  o /
--|/
  |
 / \
</textarea>  
<button onclick=test()>Go</button>
<pre id=O></pre>


1

জাভা 99 বাইট

public String[] reverse(String[]a){
  int i=-1,j=a.length;
  for(;++i<--j;){
    String b=a[i];
    a[i]=a[j];
    a[j]=b;
  }
  return a;
}

Golfed:

String[] e(String[]a){int i=-1,j=a.length;for(;++i<--j;){String b=a[i];a[i]=a[j];a[j]=b;}return a;}

1

পার্ল, 35 বাইট

34 বাইট কোড +1 এর জন্য -n

ইনপুট লাইনগুলি ফাঁক দিয়ে প্যাড করা প্রয়োজন। 13 (!) @ ধন্যবাদ সংরক্ষিত বাইট দাদা

print/T/?reverse<>:map~~reverse,<>

ব্যবহার

perl -ne 'print/T/?reverse<>:map~~reverse,<>' <<< 'False
  o /
--|/ 
  |  
 / \ '

/ o  
 /|--
  |  
 \ / 

 perl -ne 'print/T/?reverse<>:map~~reverse,<>' <<< 'True
  o /
--|/ 
  |  
 / \ '
 / \ 
  |  
--|/ 
  o /

1
perl -ne 'print/T/?reverse<>:map~~reverse,<>'আপনার 13 বাইট সংরক্ষণ করতে হবে :-)
দাদা

@ দাদা যে সত্যিই একটি বড় সঞ্চয়! আমি কেন এটি না করতাম তা জানিনা তবে আমি আপডেট করব, ধন্যবাদ!
ডম হেস্টিংস

0

গণিত, 70 বাইট

If[#,Reverse,StringReverse]@ImportString[#2,l="Lines"]~ExportString~l&

বেনামে ফাংশন, প্রথম যুক্তি হিসাবে (স্পষ্টভাবে Trueবা Falseম্যাথমেটিকায়) এবং দ্বিতীয় যুক্তির হিসাবে (মাল্টলাইন) স্ট্রিং হিসাবে একটি বুলিয়ান মান গ্রহণ করে । মাল্টলাইনের স্ট্রিংয়ের লাইনের সাথে সম্পর্কিত স্ট্রিংগুলির একটি তালিকা হিসাবে স্ট্রিংটি আমদানি করে (স্ট্রিংটি অ্যারে হিসাবে ফাংশনে প্রেরণ করা হয় না)। যদি True, তালিকা বিপরীত। যদি False StringReverseতালিকাটি থাকে যা প্রতিটি উপাদানকে স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়। তারপরে তালিকাটিকে স্ট্রিং হিসাবে এক্সপোর্ট করুন, যেখানে প্রতিটি উপাদান একটি নতুন লাইন।



0

ভিম, 33 বাইট

ভিমের আগের ভি উত্তর পরিবর্তন হয়েছে। যে কোনও ভি উত্তর পৃথক পৃথক হবে, তাই এটি সত্যই সঠিক ছিল না।

DgJ:if@"
g/^/m0
el
se ri
en
cG"

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

Hexdump

00000000: 4467 4a3a 6966 4022 0a67 2f5e 2f6d 300a  DgJ:if@".g/^/m0.
00000010: 656c 0a73 6520 7269 0a65 6e0a 6347 1222  el.se ri.en.cG."
00000020: 08                                       .

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.