আমার ASCII শিল্প কাটা


14

ধরা যাক আমি কিছু ASCII শিল্প পেয়েছি:

          ___
        ,"---".
        :     ;
         `-.-'
          | |
          | |
          | |
       _.-\_/-._
    _ / |     | \ _
   / /   `---'   \ \
  /  `-----------'  \
 /,-""-.       ,-""-.\
( i-..-i       i-..-i )
|`|    |-------|    |'|
\ `-..-'  ,=.  `-..-'/
 `--------|=|-------'
          | |
          \ \
           ) ) hjw
          / /
         ( (

( উত্স )

তবে আমি এই জয়স্টিকের কেবলটিতে ফোকাস করতে চাই, কারণ আমি আসলে একটি বাগানের পথে একটি ছবি চাই যা দরজা পর্যন্ত পৌঁছে।

 ,=.
-|=|-
 | |
 \ \
  ) )
 / /
( (

আমি লাইনের পরে লাইনটি অনুলিপি করতে পারতাম, আমি ব্লক নির্বাচন মোড সহ একটি পাঠ্য সম্পাদক ব্যবহার করতে পারি, বা ... আমি কিছু কোড লিখতে পারি!

সুতরাং, আমার কোডে পাঁচটি আর্গুমেন্ট দরকার:

  • এএসসিআইআই আর্টের একটি অংশ, একটি নতুন লাইন পৃথক স্ট্রিং।
  • উপরের-বাম কোণার এক্স অক্ষ (1-সূচকযুক্ত, বাম হাতের কলাম থেকে, ধনাত্মক পূর্ণসংখ্যার)
  • শীর্ষ-বাম কোণের Y অক্ষ (1-সূচকযুক্ত, শীর্ষ সারি থেকে, ধনাত্মক পূর্ণসংখ্যার)
  • ফলাফলের চিত্রের প্রস্থ (ধনাত্মক পূর্ণসংখ্যার)
  • ফলাফলের চিত্রের উচ্চতা (ধনাত্মক পূর্ণসংখ্যার)

পরীক্ষার কেস

ASCII চিত্র:

          ___
        ,"---".
        :     ;
         `-.-'
          | |
          | |
          | |
       _.-\_/-._
    _ / |     | \ _
   / /   `---'   \ \
  /  `-----------'  \
 /,-""-.       ,-""-.\
( i-..-i       i-..-i )
|`|    |-------|    |'|
\ `-..-'  ,=.  `-..-'/
 `--------|=|-------'
          | |
          \ \
           ) ) hjw
          / /
         ( (

বাগানের রাস্তা

  • এক্স: 10
  • Y: 15
  • প্রস্থ: 5
  • উচ্চতা: 7

ফলাফল:

 ,=.
-|=|-
 | |
 \ \
  ) )
 / /
( (

ডিবি আইকন

  • এক্স: 3
  • Y: 12
  • প্রস্থ: 6
  • উচ্চতা: 4

আউটপুট:

,-""-.
i-..-i
|    |
`-..-'

এলিয়েন প্রবীণ

  • এক্স: 9
  • Y: 1
  • প্রস্থ: 7
  • উচ্চতা: 10
  ___
,"---".
:     ;
 `-.-'
  | |
  | |
  | |
.-\_/-.
|     |
 `---'

স্বাক্ষর

  • এক্স: 16
  • Y: 19
  • প্রস্থ: 3
  • উচ্চতা: 1
hjw

বিধি


8
আমরা কি এক্স এবং ওয়াইকে 0-সূচকযুক্ত হিসাবে নিতে পারি?
টিফিল্ড

8
এছাড়াও, Yটেস্টকেস 1 এ, বিস্ফোরিত হওয়া উচিত 15, এবং টিসি 2 তে Xহওয়া উচিত3
টিফিল্ড

2
আমরা কি অনুমান করতে পারি যে ইনপুটটি ফাঁকা স্থানগুলির সাথে একটি আয়তক্ষেত্রে প্যাড করা আছে?
DLosc

6
আমি যখন সেই আসকি শিল্প, উদ্যানের পথ দেখলাম তখন ঠিক সেটাই ভাবছিলাম। আমি আর কিছু ভাবিনি ...
জো কিং

3
দেখে মনে হচ্ছে পরীক্ষার ক্ষেত্রে অনেকগুলি এক্স এবং ওয়াই মান ভুল রয়েছে (সম্ভবত কিছু 0 টি সূচকযুক্ত ?!) - কমপক্ষে: গার্ডেন পাথের ওয়াইটি 15 হওয়া উচিত; ডিবি আইকনটির এক্স 3 হওয়া উচিত
জোনাথন অ্যালান

উত্তর:


22

ক্যানভাস , 1 বাইট

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

এটি ক্রম হিসাবে ইনপুট হিসাবে উচ্চতা, প্রস্থ, ওয়াই, এক্স এবং এএসসিআইআই আর্ট লাগে।

যদিও ক্যানভাসের ASCII আর্ট অবজেক্ট সম্পর্কে প্রায় সমস্ত কিছু 0-ইনডেক্সড, কোনও কারণে 1-সূচিযুক্ত। ¯ \: _ (ツ): _ / ¯


ক্যানভাস থেকে প্রত্যাশিত উত্তর: ডি (এমবি চারকোলের কিছু মিল রয়েছে)
মৃত পসুম

এ কী যাদু!
এজেফারাডে

@ এজেফারাডে আমার অর্থ, আপনি কি আশা করবেন না যে ASCII-art ম্যানিপুলেশনের জন্য বিশেষত তৈরি করা একটি ভাষা অসি-আর্টের একটি নির্দিষ্ট অংশ পাওয়ার জন্য অন্তর্নির্মিত না থাকবে? : P
ডিজাইমা


4

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

δJθηTζε

এটি অনলাইন চেষ্টা করুন!লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। 0-সূচকযুক্ত স্থানাঙ্ক নেয়। ব্যাখ্যা:

δ

এএসসিআইআই আর্ট প্রিন্ট করুন।

Jθη

পছন্দসই আয়তক্ষেত্রের উপরের বাম কোণে ঝাঁপুন।

Tζε

ক্যানভাসকে পছন্দসই আকারে ট্রিম করুন।


3

পিপ -n , 21 বাইট

_@>--b@<dM(a^n--c+,e)

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

অথবা, যদি 0-সূচকের অনুমতি দেওয়া হয় ...

পিপ -n, 17 বাইট :

_@>b@<dM(a^nc+,e)

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

ব্যাখ্যা

পাঁচটি আর্গুমেন্টকে কমান্ড-লাইন আর্গুমেন্ট হিসাবে গ্রহণ করে।

                   a-e are the 5 cmdline args; n is newline
         a^n       Split a on newlines
              ,e   Range(e)
            c+     Add c to each element
        (       )  Use the resulting range(c,c+e) to slice into the list of lines
       M           To each line, map this function:
_                   The line
 @>b                Slice, keeping indices b and greater
    @<d             Slice, keeping indices less than d
                   Print, joining on newlines (-n flag)

উপরের সমাধানগুলি ধরে নেয় যে ইনপুটটি একটি সঠিক আয়তক্ষেত্র - অর্থাত লাইনগুলি সমস্ত একই দৈর্ঘ্যের। অন্যথায়, 2 অতিরিক্ত বাইট প্রয়োজন ( -lপরিবর্তে ব্যবহার করুন -n):

(Z(a^nZDsb+,d)c+,e)      0-indexed, 19 bytes
(Z(a^nZDs--b+,d)--c+,e)  1-indexed, 23 bytes

3

05 এ বি 1 ই , 21 19 বাইট

UV¶¡εXG¦}Y£}sG¦}s£»

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

অথবা যদি 0-indexing is allowed:

05 এ বি 1 ই , 18 বাইট

UV¶¡εX.$Y£}sF¦}s£»

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


12 আপনি যদি নিতে [X1, X2]এবং [Y1, Y2]হিসাবে নিতে পারেনv³ŸNåiy²ŸèJ=
ম্যাজিক অক্টোপাস উরন

3

জাপট -R , 13 11 বাইট

·tWÉY ®tVÉX

চেষ্টা করে দেখুন

কামিল দ্রাকারীর জন্য 2 বাইট সংরক্ষণ করা হয়েছে

9 বাইটগুলি যদি অযৌক্তিক প্রয়োজনের জন্য না হয় তবে সমাধানগুলি 1-ভিত্তিক সূচক ব্যবহার করে।

·tWY ®tVX

ব্যাখ্যা

                :Implicit input of string U and integers V=X, W=Y, X=Width & Y=Height
·               :Split U on newlines
 t              :Slice
  WÉ            : From 0-based index W-1
    Y           : To length Y
      ®         :Map
       t        :  Substring
        VÉ      :   From 0-based index V-1
          X     :   To length X
                :Implicitly join with newlines and output

আমার পরীক্ষাকার্যের, আপনি সংরক্ষণ করতে পারবেন 2 বাইট থেকে ফালি সুইচিং দ্বারা tএবং অন্য 2 বাইট 0 ইন্ডেক্স দ্বারা। এটি অপেক্ষার জন্য দ্বিতীয়টি হতে পারে যেহেতু ওপি 0 ইনডেক্সিং গ্রহণযোগ্য কিনা, বা পরীক্ষার কেসগুলি ঠিক করেছে কিনা তা স্পষ্ট করেনি।
কামিল দ্রাকারী ২

চমৎকার একটি, @ কামিলড্রাকারি - tপদ্ধতিটি অ্যারেতেও পুরোপুরি ভুলে গেছে।
শেগি

3

জাভাস্ক্রিপ্ট (নোড.জেএস) , 70 69 বাইট

-1 splice()ধারণার জন্য @ শেগি ধন্যবাদ ।

(a,x,y,w,h)=>a.split`
`.map(q=>q.substr(x-1,w)).splice(--y,h).join`
`

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

প্রদত্ত ASCII শিল্পটি বিরক্তিকর টিবিএইচ



2

জে , 45 বাইট

f=:4 :0
'a b c d'=.x-#:10
y{~<(a+i.b);c+i.d
)

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

মন্তব্য: জে 2 টি পর্যন্ত আর্গুমেন্ট, বাম এবং ডান গ্রহণ করে। ডান যুক্তি হ'ল ASCII আর্ট স্ট্রিং, বাম দিক - UHXW মানগুলির একটি তালিকা

আমি নিউলাইনটি অনুকরণ করি এবং ফাংশন কলটিতে স্ট্রিংটিকে অ্যারেতে রূপান্তর করতে একটি কোড থাকে।


2

ভি , 16 বাইট

ÀGÀ|<C-v>@cl@djyHVGp

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

ইনপুটটি একটি নিখুঁত আয়তক্ষেত্র হওয়ার জন্য ফাঁকা স্থান দিয়ে প্যাড করা হবে বলে আশা করা হচ্ছে। এছাড়াও, 'এক্স' এর আগে 'ওয়াই' ইনপুট আসে।

Hexdump:

00000000: c047 c07c 1640 636c 4064 6a79 4856 4770  .G.|.@cl@djyHVGp

2

সি (জিসিসি) , 118 109 বাইট

ইনপুটটিতে জ্যাজড রেখাগুলি থাকতে পারে: নতুন লাইনগুলি প্রিন্ট করা হয় যদি তারা ওয়াই-রেঞ্জে থাকে।

পরামর্শের জন্য সিলিংক্যাট ধন্যবাদ।

f(s,x,y,w,h,a,b,c)char*s;{for(b=1,a=0;*s;a=c?!b++:a,s++)((c=*s==10)|++a>=x&a-x<w)&b>=y&b-y<h-c&&putchar(*s);}

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




1

বাশ + কোর্টিলস, 37

cut -b$1-$[$1+$3-1]|tail +$2|head -$4

মজার বিষয় হচ্ছে, জিএনইউ লেজ 8.28 (উবুন্টু 18.04-এ) +NUMফর্ম্যাটের অনুমতি দেয় , অন্যদিকে টিআইওতে জিএনইউ লেজ 8.29 এর জন্য 2 অতিরিক্ত বাইট প্রয়োজন -n+NUM

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

আমি ভেবেছিলাম sedযে এগুলি করা খুব কম হতে পারে তবে 50 বাইটে এটি হয় না:

sed -nr "$2,$[$2+$4-1]s/.{$[$1-1]}(.{,$3}).*/\1/p"

1

K4 , 31 বাইট

সমাধান:

{[a;x;y;w;h]a .-1+(y;x)+!:'h,w}

উদাহরণ:

q)ASCII:("          ___";"        ,\"---\".";"        :     ;";"         `-.-'";"          | |";"          | |";"          | |";"       _.-\\_/-._";"    _ / |     | \\ _";"   / /   `---'   \\ \\";"  /  `-----------'  \\";" /,-\"\"-.       ,-\"\"-.\\";"( i-..-i       i-..-i )";"|`|    |-------|    |'|";"\\ `-..-'  ,=.  `-..-'/";" `--------|=|-------'";"          | |";"          \\ \\";"           ) ) hjw";"          / /";"         ( (")
q)k){[a;x;y;w;h]a .-1+(y;x)+!:'h,w}[ASCII;10;15;5;7]
" ,=. "
"-|=|-"
" | | "
" \\ \\ "
"  ) )"
" / / "
"( (  "
q)k){[a;x;y;w;h].[a;-1+(y;x)+!:'h,w]}[ASCII;3;12;6;4]
",-\"\"-."
"i-..-i"
"|    |"
"`-..-'"
q)k){[a;x;y;w;h].[a;-1+(y;x)+!:'h,w]}[ASCII;9;1;7;10]
"  ___  "
",\"---\"."
":     ;"
" `-.-' "
"  | |  "
"  | |  "
"  | |  "
".-\\_/-."
"|     |"
" `---' "
q)k){[a;x;y;w;h].[a;-1+(y;x)+!:'h,w]}[ASCII;16;19;3;1]
"hjw"

ব্যাখ্যা:

1-ইনডেক্সড ইনপুট নিন, এক্স / ওয়াই স্থানাংক এবং সূচককে আসকি শিল্পে তৈরি করুন।

{[a;x;y;w;h]a .-1+(y;x)+!:'h,w} / the solution
{[a;x;y;w;h]                  } / lambda taking 5 inputs, a(scii), x, y, w(idth), h(eight)
                           h,w  / concatenate height and width, e.g. 7 5
                        !:'     / range til each, e.g. (0 1 2 3 4 5 6;0 1 2 3 4)
                  (y;x)+        / add list y x to it, e.g. (15 16 17 18 19 20 21;10 11 12 13 14)
               -1+              / subtract 1, e.g. (14 15 16 17 18 19 20;9 10 11 12 13)
            a .                 / index into a at these coordinates

1

আর , 62 বাইট

আর এর মধ্যে একটি পাঠ্য চ্যালেঞ্জের সম্ভবত আশ্চর্যজনকভাবে সংক্ষিপ্ত সমাধান, কারণ আমাদের আসলে পুরো পাঠটিকে একটি ম্যাট্রিক্সে পড়ার দরকার নেই।

function(x,y,w,h)write(substr(readLines()[y+1:h-1],x,x+w-1),1)

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


1

\ / \ /> , 123 বাইট

j:j8+}j+}j}pppp80x
{:}i:0(?v:a=?x@s1+:
~~~~1+0!/000y
yp:qqqq~
q{y?=p:+1q:}}g$q:pp:
1}x}p}ap:q~q+1{{y!?:-
ys{{
~!u.*2(0:;!?h

ইনপুট শূণ্যস্থান ইনপুট ভেরিয়েবল একটি একক লাইন নিয়ে গঠিত x, y,w , এবংh , ASCII শিল্প পরবর্তী লাইনে অনওয়ার্ড অনুসরণ করে।

ব্যাখ্যা

এই কোডটি কোডটিতে অ্যাস্কি আর্ট স্থাপন করে \ / '/> এর স্ব-সংশোধন করার ক্ষমতা ব্যবহার করে, যা এর মতো দেখতে শেষ হয়:

কোড

এটি কোডের বাইরে নির্দিষ্ট আয়তক্ষেত্রে অক্ষরগুলি ধরে এবং আউটপুট করে।

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