হাউস অফ সান্তা ক্লজ


16

হাউস অফ সান্তা ক্লজ

দ্রষ্টব্য: এটিই আমি প্রথম চ্যালেঞ্জটি সেট করার চেষ্টা করেছি। এটি স্যান্ডবক্সের মধ্য দিয়ে গেছে তবে যদি আপনি এর সাথে কিছু ভুল পেয়ে থাকেন তবে দয়া করে কেবল ডাউনভোট করবেন না তবে একটি মন্তব্য করুন যাতে আমি এটি উন্নতি করতে পারি।

পটভূমি

একটি পুরানো বাচ্চাদের ধাঁধা রয়েছে যেখানে কাগজ থেকে আপনার কলম তুলে না নেওয়া বা কোনও লাইনের উপরে দু'বার না গিয়ে ছাদের একটি বাক্স এবং মাঝখানে দিয়ে ক্রস করা চ্যালেঞ্জ।

জার্মানিতে এটি "দাস হাউস ডেস নিকোলাস" বা "দ্য হাউস অফ সান্তা ক্লজ" নামে পরিচিত। আমি সত্যই তা স্মরণ করতে পারি না আমরা কী বলতাম। ধাঁধাটির সাথে পরিচিত নন এমন কারও জন্য এখানে সম্পূর্ণ বিশদ সরবরাহ রয়েছে ।

এখানে বাড়ির একটি ASCII শিল্প উপস্থাপনা রয়েছে।

 /\
/__\
|\/|
|/\|
----

চ্যালেঞ্জ

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

খুব সহজ লাগছে? আচ্ছা ধরছি এখানে। এটি অবশ্যই অঙ্কনের প্রতিটি পর্যায়ে আউটপুট এবং ধাঁধার নিয়ম মেনে চলতে হবে। আপনার প্রোগ্রামটির কোনও ইনপুট নেওয়ার দরকার নেই। সমাপ্ত ঘরটি অবশ্যই উপরে বর্ণিত ঠিক দেখতে হবে।

উপরের সাইট অনুসারে এখানে সম্ভাব্য 44 টি সমাধান রয়েছে। আপনি তাদের যে কোনও একটি ব্যবহার করতে পারেন। এটি একটি ASCII শিল্প চ্যালেঞ্জ তাই আপনাকে সমাধানটি গণনা করার প্রয়োজন নেই কেবল এটি আঁকতে।

আউটপুট

44 টি সমাধানের একটি থেকে প্রয়োজনীয় ফলাফলের উদাহরণ নীচে দেখানো হয়েছে:

---- 

 \
  \
----

 __
 \
  \
----

  \
 __\
 \
  \
----

 /\
/__\
 \
  \
----

 /\
/__\
|\
| \
----

 /\
/__\
|\/
|/\
----

 /\
/__\
|\/|
|/\|
----

বিধি

  • প্রয়োজনীয়তা আরও পরিষ্কার করার চেষ্টা করার জন্য আমি প্রতিটি প্রত্যাশিত আউটপুটটির মধ্যে 1 টি অতিরিক্ত নিউলাইন যুক্ত করেছি। এটি alচ্ছিক। প্রতিটি আউটপুট মধ্যে ফাঁকা লাইন যে কোনও সংখ্যা অনুমোদিত।
  • আপনার আউটপুটে অবশ্যই উপরে বর্ণিত অক্ষর /, \, -, _, এবং স্পেস থাকতে হবে। চলার জায়গাগুলি অনুমোদিত।
  • আপনার অঙ্কনের প্রতিটি লাইন অবশ্যই পূর্ববর্তী লাইনের শেষ থেকে অবিরত থাকবে এবং আপনি কোনও রেখার পুনরাবৃত্তি নাও করতে পারেন।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • উপরের লিঙ্কে উল্লিখিত ছড়াটি আপনাকে আউটপুট করতে হবে না।
  • এটি কোড গল্ফ তাই বাইটের সংক্ষিপ্ত উত্তরটি বিজয়ী হবে।

ফলাফল

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


এটি স্যান্ডবক্সে কিছু সময় ব্যয় করতে পারত । ঘরের আকারের - বা কাঠের বাড়ির সংখ্যা (বা উভয়) জন্য একটি প্যারামিটার যুক্ত করার চেষ্টা করুন। আমি এটি হিসাবে এটি খুব সহজ মনে। আপনি আপনার উদাহরণ আউটপুটটিতেও ছড়াটি যুক্ত করতে চাইতে পারেন - বা একেবারেই উল্লেখ করবেন না। আমি এই জিআইএফ সুন্দর, বা এই এক খুঁজে
তিতাস


4
@ টিটাস প্রতিক্রিয়ার জন্য ধন্যবাদ। আমার উদ্দেশ্যটি ছিল একটি বিশেষ চ্যালেঞ্জ তৈরি করা নয় বরং এমন একটি তৈরি করা যা মোটামুটি সহজেই সম্ভবযোগ্য এবং তাই যতটা সম্ভব লোককে সমাধানের প্রস্তাব দেওয়ার জন্য উত্সাহিত করা। আমি আমার পরবর্তী চেষ্টার জন্য বোর্ডে আপনার পরামর্শ নেব।
এলপেড্রো

1
আমার ভুল; আমি আসকি শিল্পের জন্য খুব জটিল জিনিসগুলি আশা করছিলাম। :) তবে আমি এখনও gifs পছন্দ।
তিতাস

জিআইএফগুলি দুর্দান্ত এবং আমি
ছন্দটি

উত্তর:


10

জেলি , 40 39 36 বাইট

“ḥ%DtƊVḍI’ḃ9W;“|_/-\/\|‘ˤy@\FỌ»⁶s4Y

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

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

“ḥ%DtƊVḍI’

একটি বাইজিক বেস-250 আক্ষরিক; প্রতিটি অক্ষর জেলি কোড পৃষ্ঠাতে এর কোড পয়েন্টের সাথে মিলে যায় । ফলাফল 13192938935880491074

          ḃ9

উত্পন্ন পূর্ণসংখ্যাটিকে বাইজিক বেস 9 এ রূপান্তর করে, পূর্ণসংখ্যার অ্যারে প্রদান করে
[9, 6, 7, 9, 6, 2, 2, 7, 1, 5, 3, 8, 1, 3, 5, 8, 4, 4, 4, 4] । পূর্ণসংখ্যাগুলি 9 এর ব্যতীত স্ট্রোকের ক্রমের সাথে সামঞ্জস্য হয় যা কোনও স্থানকে নির্দেশ করে।

            W

উত্পন্ন অ্যারেটিকে একটি একক অ্যারেতে আবৃত করে, যা এটি এখন তৈরি করব এমন অ্যারেতে প্রেন্ডেন্ড করার প্রয়োজন হবে।

              “|_/-\/\|‘ˤ

নিম্নলিখিত হিসাবে কাজ করে। ¤বাম দিকে দুটি লিঙ্ককে একটি নীলাদিক শৃঙ্খলে একত্রিত করে। প্রথমটি, “|_/-\/\|‘নির্দিষ্ট অক্ষরের কোড পয়েন্ট দেয়, [124, 95, 47, 45, 92, 47, 92, 124] প্রদান করে । তারপরে, [Ė পয়েন্ট
] [[1, 124], [2, 95], [3, 47], [4, 45], [5, 92], [6, 47], [7, 92] উপার্জনকারী কোড পয়েন্টগুলি গণনা করবে , [8, 124]] । জোড় [n, c] এর অর্থ হল যে n স্ট্রোক কোড পয়েন্ট সি সহ ASCII অক্ষর হবে ।

             ;

উত্পন্ন অ্যারেগুলি সংযুক্ত করে। ফলাফল অ্যারে
[[9,6,7,9,6,2,2,7,1,5,3,8,1,3,5,8,4,4,4,4], [1,124] ], [২,৯৯], [৩,47।], [৪,৪৫], [৫,৯২], [,,47৪], [,,৯২], [৮,১২৪]]

                          y@\

yঅদলবদল আর্গুমেন্ট ( @) দ্বারা ট্রান্সলিটেশন ( ) ব্যবহার করে হ্রাস করতে একটি সংযোজক (অর্থাত্ মধ্যবর্তী পদক্ষেপগুলি দেখানো) সম্পাদন করে । প্রথম পদক্ষেপে, উদাহরণস্বরূপ, আমরা প্রতিটি 1 টি মূল অ্যারিতে 124 দিয়ে প্রতিস্থাপন করি যা অক্ষরের কোড পয়েন্ট |

                             FỌ

ফলাফলটি সমতল করে এবং সমস্ত কোড পয়েন্টগুলি সংশ্লিষ্ট ASCII অক্ষরের সাথে প্রতিস্থাপন করে। সমস্ত পদক্ষেপে, এটি কোড পয়েন্ট 1 থেকে 9 সহ কিছু ছাপিয়ে অক্ষর তৈরি করবে ।

                               »⁶

সমস্ত অক্ষর অক্ষরকে স্পেস দিয়ে প্রতিস্থাপন করে স্পেস ক্যারেক্টারের সাথে অক্ষর অনুসারে সর্বাধিক গ্রহণ করে।

                                 s4Y

উত্পন্ন স্ট্রিংটি দৈর্ঘ্যের চার অংশে বিভক্ত হয় এবং সেগুলি বিভাজক হিসাবে একটি লাইনফিডের সাথে যোগ দেয়।


2
কি দারুন. কেবলমাত্র বাহ! +1
এলপেড্রো

তবে অপেক্ষা করুন, সেগুলি বাইট?
লিফ উইলার্টস

1
@ লিফওয়িলার্স মুদ্রণযোগ্য অক্ষরগুলি এড়াতে, জেলি একটি কাস্টম কোড পৃষ্ঠা ব্যবহার করে যা 256 টি অক্ষরকে এনকোড করে এটি প্রতিটি একক বাইট হিসাবে বোঝে। শিরোনামের বাইটস লিঙ্কটি এটিতে ইঙ্গিত করে।
ডেনিস

সেই লিঙ্কটি ক্লিক করতে না পেরে দুঃখিত তাই: ডি
লিফ উইলার্টস

এটি যে কোনও কিছুর ব্যাখ্যার জন্য যতটা জিতেছে। সম্মান.
এলপেড্রো

13

জাভাস্ক্রিপ্ট (ES6), 119 116 96 92 91 বাইট

for(i=8;i--;)console.log(`834
3554
2610
2160
7777`.replace(/./g,c=>'|/|/\\_\\- '[c<i?8:c]))


চমৎকার উত্তর. আমার একটা অনুভূতি ছিল যে জাভাস্ক্রিপ্টটি সেখানে থাকবে বা এর আশেপাশে থাকবে :-)
এলপেড্রো

একাধিক সম্পাদনার জন্য দুঃখিত। আমার দ্বিতীয় কফির আগে পোস্ট করা উচিত নয়।
আর্নৌল্ড

একাধিক সম্পাদনা ভাল। বাইটের গণনা কমতে দেখে ভাল লাগল।
এলপেড্রো

আপনার উত্তরে কোডটির দুটি অনুলিপি থাকার কোনও অর্থ আছে কি?
নীল

@ নীল - আমি দু'জনের থাকার কোনও ভাল কারণ না পাওয়া পর্যন্ত আমি কেবল একজনকেই রাখব। ^^
আরনল্ড

9

ব্যাচ, 356 344 341 337 বাইট

@set s=@set "
%s%g=@goto 1
%s%r=
%s%c=
%s%u=|
%s%l=|
%s%f=
@for /l %%i in (1,1,7)do @call:%%i
%s%u=|\/|
%s%l=|/\|
%g%
:7
%s%u=|\/
%s%l=|/\
%g%
:6
%s%f=----
%g%
:5
%s%u=|\
%s%l=| \
%g%
:4
%s%c=/__\
%g%
:3
%s%r= /\
%s%c=/  \
%g%
:2
%s%r= /
%s%c=/
:1
@for %%l in ("%r%" "%c%" "%u%" "%l%" "%f%")do @echo(%%~l

বোকা ব্যাচ |নিয়মগুলি উদ্ধৃত করে ... আপনি যদি |কোনও ভেরিয়েবলের একটি চান , আপনার এটি তিনটি দিয়ে উদ্ধৃত করতে হবে ^, সুতরাং এটির @পরিবর্তে এটি ব্যবহার করা এবং আউটপুট এ এটি বিকল্প হিসাবে সস্তায় করা উচিত , যদিও এটি অর্জনের জন্য আমাকে বাম প্রাচীর দিয়ে শুরু করতে হবে। এক লাইন একটি পিছনের স্থান আছে। echo(কারণ ব্যবহার করা হয় r, cএবং fভেরিয়েবল খালি হতে পারে এবং আমরা চাই না ECHO is off.মুদ্রিত।

সম্পাদনা করুন: শেষ অংশের জন্য পড়া ব্যবহার করে 12 বাইট সংরক্ষণ করা হয়েছে। forপ্রতিটি অংশ মুদ্রণের জন্য একটি লুপ ব্যবহার করে 3 বাইট সংরক্ষণ করা হয়েছে , এর অর্থ হ'ল আমি এখন |আমার ভেরিয়েবলগুলিতে এস ব্যবহার করি যা কোডটি পড়তে কিছুটা সহজ করে তোলে। @পরিবর্তে সুস্পষ্ট অক্ষর ব্যবহার করে 4 বাইট সংরক্ষণ করা @echo off। আমি মনে করি বাম প্রাচীর দিয়ে শুরু করতে এখনও কয়েকটি বাইট প্রয়োজন requires


2
সংক্ষিপ্ততম নাও হতে পারে তবে ব্যাচ +1 এ এটি পরিচালনা করার জন্য আমার কাছ থেকে একটি
উত্সাহ পেয়েছে

echo:আরও মানসম্পন্ন তবে echo(দেখে মনে হচ্ছে আপনি কোনও ভাষার বৈশিষ্ট্যকে আপত্তি করছেন, সুতরাং +1।
wizzwizz4

@ wizzwizz4 echo:কিছু অস্পষ্ট প্রান্ত ক্ষেত্রে ব্যর্থ হয়, তবে এর কোনও ব্যর্থতার ক্ষেত্রে আমি জানি না echo(
নিল

@ wizzwizz4 foo.batআপনার বর্তমান ডিরেক্টরিতে যদি একটি ফাইল থাকে তবে echo(\..\foo.batইকোস \..\foo.batকিন্তু কার্যকর echo:\..\foo.batকরে foo.bat
নিল

@ নীল আপনি কি জানেন যে এটি কেন? echo:.\foo.batপরিবর্তে মনে হয় এটির প্রভাব আছে। এটি কি কোনও ডিরেক্টরি স্ট্যাক গণ্ডির কারণে, যেখানে মূল ডিরেক্টরি থেকে "ইউপি" বর্তমান ডিরেক্টরি?
wizzwizz4

7

সি, 118 বাইট

main(){char *p,n;for(n='B';n++<'J';)for(p="ZFEAFDDEAGCHIAGHCIABBBBAA";*p;p++)putchar(" \n-\\_\\/|/|"[(*p<n)**p&15]);}

চিত্তাকর্ষক! ভাল উত্তর প্রথম, এবং সাইটে আপনাকে স্বাগতম!
ডিজেএমসিএমহেম

1
3 বাইট সংরক্ষণ করুন: char*p(কোনও স্থান নেই) এবং পরিবর্তন করুন 'B'এবং 'J'তাদের ASCII কোডগুলিতে।
স্তর নদী সেন্ট

উত্তরের জন্য ধন্যবাদ. আমি সি এমনকি প্রতিযোগিতা আশা করি না। এটি সত্যিই চিত্তাকর্ষক এবং ভাল একটি +1 মূল্য
ElPedro

6

/// , 112 বাইট

/!/\/\///*/----
 !@/\\\\!$/ @@!^/
*@\/@@
@\/__@@
/*@
 $
*__
$
 $
*$
 __@
$
 $^$
 $^|@
|$^|@\/
|\/@^|@\/|
|\/@|
*

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


আমি 112 এর একটি একক বাইট বুঝতে পারি না তবে আমি এটি অনলাইনে চেষ্টা করেছি এবং এটি
টিনে

1
@ এলপিড্রো হেডারের লিঙ্কটি ক্লিক করার চেষ্টা করুন, আপনি ধারণাটি বুঝতে পারেন, তবে যদি তা না হয় তবে কেবল আমার কাছে ফিরে আসুন। আমি চাই যে আরও বেশি বেশি লোক কোনও ভাষা বুঝতে সক্ষম হয় এবং আপনি যদি এটি না করেন তবে এটি একটি দুঃখজনক সত্য। আমি জানি আমি সবাইকে বুঝতে /// করতে পারি না (কিছু লোক কেবল চায়) খাদ্য ও পানি, /// এবং PPCG ধরা দূরে থাক দূরে, যদিও না অসম্ভব)।
এরিক আউটগলফার

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

2

পিএইচপি, 98 95 বাইট

আরনাউল্ডসের সমাধান দ্বারা অনুপ্রাণিত

for($i=8;$i--;)for($p=24;$p--;)echo"|/|/\\_\\- 
"[($c="977779061290162945539438"[$p])<$i?8:$c];

দ্রষ্টব্য: প্রথম কোড লাইনে একটি পিছনের স্থান রয়েছে।


টিটাস ভাল লাগল চলার জায়গাগুলি অনুমোদিত।
এলপেড্রো

@ এলপেড্রো: আমি কেবলমাত্র এমন কিছু লোককে জানি যাঁরা স্বয়ংক্রিয়ভাবে ছাঁটাই করতে সেখানে সম্পাদকদের কনফিগার করেছেন; এই কারণেই আমি এটি উল্লেখ করেছি।
তিতাস

1

জিডি সহ পিএইচপি, 348 338 বাইট (প্রতিযোগিতা নয়)

ঠিক যা চেয়েছিল তা নয়, ...

function f($v,$w){global$x,$y,$i;imageline($i,$x,$y,$x=$v,$y=$w,1);ob_start();imagepng($i);$s=ob_get_clean();ob_end_clean();echo'<img src="data:image/png;base64,',base64_encode($s),'" > ';}$i=imagecreate($w=9,$h=$w+$z=$w/2);imagecolorallocate($i,255,255,255);f(--$w,$y=--$h);f(0,$z);f($w,$z);f($w/2,0);f(0,$z);f(0,$h);f($w,$z);f($w,$h);

ফাইল এ সংরক্ষণ করুন, একটি ব্রাউজারে কল করুন

ভাঙ্গন

function f($v,$w)
{
    global$x,$y,$i;
    imageline($i,$x,$y,$x=$v,$y=$w,1);      // draw line, set end coords as new start coords
    ob_start();imagepng($i);$s=ob_get_clean();ob_end_clean();           // get image output
    echo'<img src="data:image/png;base64,',base64_encode($s),'" > ';    // print <img> tag
}
// calculate dimensions, create image, allocate background color (foreground implicitly black)
$i=imagecreate($w=9,$h=$w+$z=$w/2);imagecolorallocate($i,255,255,255);
// paint lines: implicit `$x=0`
f(--$w,$y=--$h);f(0,$z);f($w,$z);f($w/2,0);f(0,$z);f(0,$h);f($w,$z);f($w,$h);

আরও বড় ঘর আঁকতে, $w=9আপনার পছন্দসই প্রস্থে পরিবর্তন করুন।


এবং আমি এটিকে একটি +1ও দিই। যদিও এটি সরাসরি চ্যালেঞ্জকে মোকাবিলা করে না এটি এটি আপনার প্রস্তাবিত উন্নতিগুলি কভার করে এবং খুব দুর্দান্ত দেখায় :)
এলপেড্রো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.