একটি সুনপান অ্যাবাকাস অঙ্কন করুন


32

সংক্ষিপ্ততম প্রোগ্রামটি লিখুন যা কোনও একক পূর্ণসংখ্যাকে ইনপুট হিসাবে গ্রহণ করে এবং একটি সুয়ানপান অ্যাবাকাস প্রিন্ট করে

Testcases

ইনপুট:

314159

আউটপুট:

|\======================================/|
||  (__)  (__)  (__)  (__)  (__)  (__)  ||
||  (__)  (__)  (__)  (__)   ||    ||   ||
||   ||    ||    ||    ||    ||    ||   ||
||   ||    ||    ||    ||   (__)  (__)  ||
|<======================================>|
||  (__)  (__)  (__)  (__)   ||   (__)  ||
||  (__)   ||   (__)   ||    ||   (__)  ||
||  (__)   ||   (__)   ||    ||   (__)  ||
||   ||    ||   (__)   ||    ||   (__)  ||
||   ||    ||    ||    ||    ||    ||   ||
||   ||    ||    ||    ||   (__)   ||   ||
||   ||   (__)   ||   (__)  (__)   ||   ||
||   ||   (__)   ||   (__)  (__)   ||   ||
||  (__)  (__)   ||   (__)  (__)   ||   ||
||  (__)  (__)  (__)  (__)  (__)  (__)  ||
|/======================================\|

ইনপুট:

6302715408

আউটপুট:

|\==============================================================/|
||  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  ||
||   ||   (__)  (__)  (__)   ||   (__)   ||   (__)  (__)   ||   ||
||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||   ||
||  (__)   ||    ||    ||   (__)   ||   (__)   ||    ||   (__)  ||
|<==============================================================>|
||  (__)  (__)   ||   (__)  (__)  (__)   ||   (__)   ||   (__)  ||
||   ||   (__)   ||   (__)  (__)   ||    ||   (__)   ||   (__)  ||
||   ||   (__)   ||    ||    ||    ||    ||   (__)   ||   (__)  ||
||   ||    ||    ||    ||    ||    ||    ||   (__)   ||    ||   ||
||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||   ||
||   ||    ||   (__)   ||    ||    ||   (__)   ||   (__)   ||   ||
||  (__)   ||   (__)   ||    ||   (__)  (__)   ||   (__)   ||   ||
||  (__)   ||   (__)  (__)  (__)  (__)  (__)   ||   (__)   ||   ||
||  (__)  (__)  (__)  (__)  (__)  (__)  (__)   ||   (__)  (__)  ||
||  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  ||
|/==============================================================\|

কমান্ড-লাইনে নম্বর দেওয়া যাবে?
জোয়

ইনপুট দৈর্ঘ্যের উপর কোন বিধিনিষেধ?
জোয়

অনুরূপ golf.shinh.org/p.rb?Soroban+Fixed কেউ গলফ কিভাবে আরো অনেক কিছুতে কিছু ধারনা দরকার পারেন।
নবাব

1
তাহলে উপরের সারি এবং নীচের সারিটি সর্বদা পুরোপুরি পূর্ণ? কেন তারা এ জাতীয় অপ্রয়োজনীয় অ্যাবাকাস আবিষ্কার করেছিল? :)
টিমউই

টিমউই, একই অ্যাবাকাস হেক্সিডেসিমালের জন্য ব্যবহার করা যেতে পারে। দশমিকের জন্য ব্যবহৃত হলে অতিরিক্ত সারিগুলি বেশিরভাগ ক্ষেত্রে গুণ এবং বিভাগগুলি সম্পাদন করার সময় ব্যবহৃত হয়
gnibbler

উত্তর:


14

জে, 126 124 121 119 116 115 113 105 116 115 112 টি অক্ষর

'|'s":(' 's[:,.(_6[\'  ||   (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1[(s=:[,.~,.)9!:7'\=/<=>/=\|='

কীবোর্ড থেকে ইনপুট নেয়। উদাহরণ:

   '|'s":(' 's[:,.(_6[\'  ||   (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1[(s=:[,.~,.)9!:7'\=/<=>/=\|='
6302715408
|\==============================================================/|
||  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  ||
||   ||   (__)  (__)  (__)   ||   (__)   ||   (__)  (__)   ||   ||
||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||   ||
||  (__)   ||    ||    ||   (__)   ||   (__)   ||    ||   (__)  ||
|<==============================================================>|
||  (__)  (__)   ||   (__)  (__)  (__)   ||   (__)   ||   (__)  ||
||   ||   (__)   ||   (__)  (__)   ||    ||   (__)   ||   (__)  ||
||   ||   (__)   ||    ||    ||    ||    ||   (__)   ||   (__)  ||
||   ||    ||    ||    ||    ||    ||    ||   (__)   ||    ||   ||
||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||   ||
||   ||    ||   (__)   ||    ||    ||   (__)   ||   (__)   ||   ||
||  (__)   ||   (__)   ||    ||   (__)  (__)   ||   (__)   ||   ||
||  (__)   ||   (__)  (__)  (__)  (__)  (__)   ||   (__)   ||   ||
||  (__)  (__)  (__)  (__)  (__)  (__)  (__)   ||   (__)  (__)  ||
||  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  ||
|/==============================================================\|

এখানে মুখ্য কৌশলটি হ'ল জে'র বক্সিং ব্যবহার করা চরিত্রগুলির নতুন সংজ্ঞা দিয়ে অপব্যবহার করা। এটা একটা ব্যবহার বিশ্বব্যাপী প্যারামিটার - 9!:7- এই কাজ করতে। আরও golfing জন্য রুম আছে হতে পারে, কিন্তু সৎ আমি শুধু কিছু পরিশ্রমী যে জন্য ক্ষতিপূরণ করা উচিত পেতে আনন্দিত ছিল হতে এই প্রশ্ন আমার শেষ চেষ্টা

'গাজ এটি করেছে' :-) বলতে পর্যাপ্ত অক্ষর রেখে একটি টুইটের সাথে ফিট করে।

সম্পাদনা করুন: 3 টি অক্ষরের সঞ্চয় জেসি মিলিকানের উত্তর 2 6$' || (__)'থেকে নেওয়া হয়েছে ।

আরও সম্পাদনা: হারিয়ে যাওয়া 11 টি অক্ষর যে দু'পাশে অতিরিক্ত স্পেস যুক্ত করেছে যা আমি লক্ষ্য করি নি উপস্থিত ছিল না।

ব্যাখ্যা:

কোডটি মূলত তিনটি বিভাগে রয়েছে:

1) সেটআপ

[(s=:[,.~,.)9!:7'\=/<=>/=\|='

এটি নিজেই দুটি অংশে।
9!:7'\=/<=>/=\|='বাক্সগুলি প্রদর্শনের জন্য জে ব্যবহার করবে এমন অক্ষরগুলির নতুন সংজ্ঞা দেয়। জে'র বক্সিংটি সাধারণত দেখতে এরকম লাগে:

   2 2$<"0[1 2 3 4
┌─┬─┐
│1│2│
├─┼─┤
│3│4│
└─┴─┘

তবে নতুন সংজ্ঞা দেওয়ার পরে এটি দেখতে এরকম দেখাচ্ছে:

   2 2$<"0[1 2 3 4
\===/
|1|2|
<===>
|3|4|
/===\

(s=:[,.~,.)একটি ক্রিয়া সংজ্ঞা দেয় যা আমি পরে কয়েকবার ব্যবহার করব be এটি ঘোষণার জন্য সেরা জায়গা হিসাবে দেখা যাচ্ছে। এটি বামে একটি অক্ষর এবং ডানদিকে অক্ষরের একটি অ্যারে লাগে এবং চরিত্রের মধ্যে অ্যারেটি স্যান্ডউইচ করে। উদাহরণ স্বরূপ:

   3 5$'abcdefghijklmno'
abcde
fghij
klmno

   '-' s 3 5$'abcdefghijklmno'
-abcde-
-fghij-
-klmno-

ফাইনালটি [কেবলমাত্র পরবর্তী অংশ থেকে সেটআপটি পৃথক করে।

2) ইনপুট এবং প্রতিনিধিত্ব

,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1

".,.1!:1[1 কীবোর্ড থেকে ইনপুট নেয় এবং এটিকে পৃথক অঙ্কে পৃথক করে:

   ".,.1!:1[1
314159
3 1 4 1 5 9

((i.5)</5|]) অ্যাবাকাসের নীচের অংশের একটি শূন্য এবং উপস্থাপনা তৈরি করে:

   ((i.5)</5|]) 3 1 4 1 5 9
1 1 1 1 0 1
1 0 1 0 0 1
1 0 1 0 0 1
0 0 1 0 0 1
0 0 0 0 0 0

|:@(1,.<&5) অ্যাবাকাসের শীর্ষ অংশের একটি শূন্য এবং উপস্থাপনা তৈরি করে:

   |:@(1,.<&5) 3 1 4 1 5 9
1 1 1 1 1 1
1 1 1 1 0 0

এই দুটি অংশ একসাথে বাক্সযুক্ত রয়েছে ;:

   (|:@(1,.<&5);((i.5)</5|])) 3 1 4 1 5 9
\=======================/
|1 1 1 1 1 1|1 1 1 1 0 1|
|1 1 1 1 0 0|1 0 1 0 0 1|
|           |1 0 1 0 0 1|
|           |0 0 1 0 0 1|
|           |0 0 0 0 0 0|
/=======================\

তারপরে বাক্সগুলি একে অপরের উপরের অংশে অ্যাবাকাসের ভিত্তি তৈরি করে দেওয়া হয়:

   ,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\===========/
|1 1 1 1 1 1|
|1 1 1 1 0 0|
<===========>
|1 1 1 1 0 1|
|1 0 1 0 0 1|
|1 0 1 0 0 1|
|0 0 1 0 0 1|
|0 0 0 0 0 0|
/===========\

3) আউটপুট

'|'s":(' 's[:,.(_6[\'  ||   (__)'){~(,-.))&.>

&.>তারপরে যা যা ঘটে তা উভয় বাক্সে ঘুরে দেখাবে।
(,-.)এটি এমন একটি হুক যা ইনপুটটিকে অস্বীকার করবে এবং তারপরে এটি মূলটির শেষে যুক্ত করবে:

   2 5$1 0 1 0 1
1 0 1 0 1
1 0 1 0 1

   (,-.) 2 5$1 0 1 0 1
1 0 1 0 1
1 0 1 0 1
0 1 0 1 0
0 1 0 1 0

এটি সত্য উপস্থাপনের অংশ, তবে গল্ফিংয়ের উদ্দেশ্যে এই বিভাগে এটি থাকা ভাল। পূর্ববর্তী ইনপুটটিতে প্রয়োগ করা হয়েছে:

   (,-.)&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\===========/
|1 1 1 1 1 1|
|1 1 1 1 0 0|
|0 0 0 0 0 0|
|0 0 0 0 1 1|
<===========>
|1 1 1 1 0 1|
|1 0 1 0 0 1|
|1 0 1 0 0 1|
|0 0 1 0 0 1|
|0 0 0 0 0 0|
|0 0 0 0 1 0|
|0 1 0 1 1 0|
|0 1 0 1 1 0|
|1 1 0 1 1 0|
|1 1 1 1 1 1|
/===========\

[:,.(_6[\' || (__)'){~ জিরো এবং সেগুলি এখন পুঁতির প্রতিনিধিত্ব করতে একটি স্ট্রিং বা একটির অনুপস্থিতি নির্বাচন করতে ব্যবহৃত হয়:

   ([:,.(_6[\'  ||   (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\====================================/
| (__)  (__)  (__)  (__)  (__)  (__) |
| (__)  (__)  (__)  (__)   ||    ||  |
|  ||    ||    ||    ||    ||    ||  |
|  ||    ||    ||    ||   (__)  (__) |
<====================================>
| (__)  (__)  (__)  (__)   ||   (__) |
| (__)   ||   (__)   ||    ||   (__) |
| (__)   ||   (__)   ||    ||   (__) |
|  ||    ||   (__)   ||    ||   (__) |
|  ||    ||    ||    ||    ||    ||  |
|  ||    ||    ||    ||   (__)   ||  |
|  ||   (__)   ||   (__)  (__)   ||  |
|  ||   (__)   ||   (__)  (__)   ||  |
| (__)  (__)   ||   (__)  (__)   ||  |
| (__)  (__)  (__)  (__)  (__)  (__) |
/====================================\

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

   (' 's[:,.(_6[\'  ||   (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
\======================================/
|  (__)  (__)  (__)  (__)  (__)  (__)  |
|  (__)  (__)  (__)  (__)   ||    ||   |
|   ||    ||    ||    ||    ||    ||   |
|   ||    ||    ||    ||   (__)  (__)  |
<======================================>
|  (__)  (__)  (__)  (__)   ||   (__)  |
|  (__)   ||   (__)   ||    ||   (__)  |
|  (__)   ||   (__)   ||    ||   (__)  |
|   ||    ||   (__)   ||    ||   (__)  |
|   ||    ||    ||    ||    ||    ||   |
|   ||    ||    ||    ||   (__)   ||   |
|   ||   (__)   ||   (__)  (__)   ||   |
|   ||   (__)   ||   (__)  (__)   ||   |
|  (__)  (__)   ||   (__)  (__)   ||   |
|  (__)  (__)  (__)  (__)  (__)  (__)  |
/======================================\

এটি সম্পন্ন করার পরে, বাকিটি হ'ল এটি একটি স্ট্রিংয়ে রূপান্তর করা ":যাতে আমরা এটি দুটি কলামের মধ্যে স্যান্ডউইচ করতে পারি |:

   '|'s":(' 's[:,.(_6[\'  ||   (__)'){~(,-.))&.>,.(|:@(1,.<&5);((i.5)</5|]))".,.1!:1[1
314159
|\======================================/|
||  (__)  (__)  (__)  (__)  (__)  (__)  ||
||  (__)  (__)  (__)  (__)   ||    ||   ||
||   ||    ||    ||    ||    ||    ||   ||
||   ||    ||    ||    ||   (__)  (__)  ||
|<======================================>|
||  (__)  (__)  (__)  (__)   ||   (__)  ||
||  (__)   ||   (__)   ||    ||   (__)  ||
||  (__)   ||   (__)   ||    ||   (__)  ||
||   ||    ||   (__)   ||    ||   (__)  ||
||   ||    ||    ||    ||    ||    ||   ||
||   ||    ||    ||    ||   (__)   ||   ||
||   ||   (__)   ||   (__)  (__)   ||   ||
||   ||   (__)   ||   (__)  (__)   ||   ||
||  (__)  (__)   ||   (__)  (__)   ||   ||
||  (__)  (__)  (__)  (__)  (__)  (__)  ||
|/======================================\|

আমি অনুভব করেছি যে আপনার আউটপুটটিতে কিছু "ভুল" রয়েছে তবে এটি সনাক্ত করতে আমার কিছুটা সময় লেগেছিল: আপনি ডিসপ্লেটির খুব বাম এবং ডানদিকে একটি খালি কলাম বাদ দিতে পারেন (তৃতীয় এবং তৃতীয়-শেষ আসকি কলাম)।
হাওয়ার্ড

@ হওয়ার্ড ওয়াহ, ভাল জায়গা। আমি তা খেয়াল করিনি। আমি এটি ঠিক করতে একটি নজর রাখব।
গ্যারেথ

@ জোয়ার্ড ১১ টি অক্ষরের ব্যয় নির্ধারিত। লজ্জাজনক, আমি ভেবেছিলাম আমার 100 এর নিচে নামার সুযোগ হবে: :-(
গ্যারেথ

চমৎকার কাজ. দেখে মনে হচ্ছে @ ধরার পক্ষে ধরার জন্য অনেক কাজ আছে
gnibbler

অনুগ্রহের 3 দিন বাকি আছে। আমি এটিকে মধ্য সময়ের জন্য গ্রহণযোগ্য হিসাবে চিহ্নিত করেছি।
gnibbler

14

রুবি 1.9, 154 টি অক্ষর

puts'|\%s/|'%$r=?=*(2+6*gets.size),(0..14).map{|a|a==4?"|<#$r>|":"|| #{$_.gsub(/./){(5*a+n=$&.hex)/10!=1&&(a-n%5)/5!=1?' (__) ':'  ||  '}} ||"},"|/#$r\\|"

অনুমান ইনপুট হয় কোনও নতুন লাইনের মাধ্যমে শেষ করা হয়নি

মজাদার ঘটনা: যেভাবে আমি ইনপুট ডিজিটগুলিকে সংখ্যায় পরিণত করি ( $&.hexতার চেয়ে এক বাইট আরও কম $&.to_i), এই অ্যাবাকাস আসলে হেক্স ডিজিট পর্যন্ত কাজ করে e:

$ echo -n "0123456789abcdef" | ruby suanpan.rb
|\==================================================================================================/|
||  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)   ||    ||    ||    ||    ||    ||   ||
||  (__)  (__)  (__)  (__)  (__)   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||   (__)  ||
||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||   (__)  (__)  (__)  (__)  (__)  (__)  ||
||   ||    ||    ||    ||    ||   (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  ||
|<==================================================================================================>|
||   ||   (__)  (__)  (__)  (__)   ||   (__)  (__)  (__)  (__)   ||   (__)  (__)  (__)  (__)   ||   ||
||   ||    ||   (__)  (__)  (__)   ||    ||   (__)  (__)  (__)   ||    ||   (__)  (__)  (__)   ||   ||
||   ||    ||    ||   (__)  (__)   ||    ||    ||   (__)  (__)   ||    ||    ||   (__)  (__)   ||   ||
||   ||    ||    ||    ||   (__)   ||    ||    ||    ||   (__)   ||    ||    ||    ||   (__)   ||   ||
||   ||    ||    ||    ||    ||    ||    ||    ||    ||    ||    ||    ||    ||    ||    ||    ||   ||
||  (__)   ||    ||    ||    ||   (__)   ||    ||    ||    ||   (__)   ||    ||    ||    ||   (__)  ||
||  (__)  (__)   ||    ||    ||   (__)  (__)   ||    ||    ||   (__)  (__)   ||    ||    ||   (__)  ||
||  (__)  (__)  (__)   ||    ||   (__)  (__)  (__)   ||    ||   (__)  (__)  (__)   ||    ||   (__)  ||
||  (__)  (__)  (__)  (__)   ||   (__)  (__)  (__)  (__)   ||   (__)  (__)  (__)  (__)   ||   (__)  ||
||  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  (__)  ||
|/==================================================================================================\|

জন্য 0xf , তৃতীয় পুঁতি জাদুকরীভাবে উপরের অর্ধেক প্রদর্শিত হবে।

স্ক্রিপ্ট আমন্ত্রণের সময় অতিরিক্ত পতাকাগুলির অনুমতি দেওয়ার সময়, এটি 152 বাইট (149 বাইট কোড + 3 বাইট অতিরিক্ত প্রার্থনা পতাকা) ছোট করা যেতে পারে:

puts'|\%s/|'%$r=?=*(2+6*~/$/),(0..14).map{|a|a==4?"|<#$r>|":"|| #{$_.gsub(/./){(5*a+n=$&.hex)/10!=1&&(a-n%5)/5!=1?' (__) ':'  ||  '}} ||"},"|/#$r\\|"

সাথে চালাও ruby -n suanpan.rb


12

পার্ল (১৫১ টি চর)

( 168 163 158 157 156 154 )

$i=<>;$c.=$_-4?"
||  $i||":"
|<$m>|",$m='==',$c=~s!\d!$m.='='x6;($_-$&%5)/5%2|(5*$_+$&)/10%7==1?' ||   ':'(__)  '!eg for 0..14;print"|\\$m/|$c
|/$m\\|"

ব্যাখ্যা

# Read the number from STDIN.
$i = <>;

# for statement starts here...

    # Append to $c a line containing either the horizontal dividing bar (in row #4)
    # or the current abacus row with the digits in place of the pegs.
    # This relies on the fact that $m will have been computed after at least one iteration.
    $c .= $_-4 ? "\n||  $i||" : "\n|<$m>|",

    # Notice that $m is redundantly recomputed from scratch in each iteration.
    $m = '==',

    # Substitute the correct pegs for the digit characters.
    $c =~ s!\d!
        $m .= '=' x 6;

        # Weird expression for the abacus function.
        # I have to use “% 7” because otherwise the division is floating-point...
        # Notice that $_ is the row and $& is the digit.
        ($_ - $& % 5)/5 % 2 | (5*$_ + $&)/10 % 7 == 1
        ? ' ||   '
        : '(__)  '
    !eg
for 0..14;

# Could shorten further by using “say” if you don’t mind excluding the “-E” from the count...
print "|\\$m/|$c\n|/$m\\|"

সম্পাদনাগুলি

  • (154 → 151) তিনটি \nপ্রকৃত নিউলাইন অক্ষরে পরিবর্তিত হয়েছে । বিশ্বাস করতে পারি না আমি এর আগে ভেবে দেখিনি!

1
এটি ঠিক ... দুর্দান্ত!
জার্মানি_গুই

8

উইন্ডোজ পাওয়ারশেল, 191

$y='='*(2+6*($i=[char[]]"$input").Count)
filter f($v){"|| $((' (__)','  || ')[($i|%{iex $_%$v})])  ||"}"|\$y/|"
f 1
f 10-ge5
f 1+1
f 10-lt5
"|<$y>|"
1..5|%{f 5-lt$_}
1..5|%{f 5-ge$_}
"|/$y\|"

ইতিহাস:

  • 2011-03-11 23:54 (340) প্রাথমিক প্রচেষ্টা।
  • 2011-03-12 00:21 (323) কোড জুড়ে স্ট্রিং ইন্টারপোলেশন ব্যবহার করে।
  • 2011-03-12 00:21 (321) ইনলাইন করা $l
  • 2011-03-12 01:07 (299) আরও পুনরাবৃত্ত অংশগুলির পাশাপাশি ফর্ম্যাট স্ট্রিংয়ের জন্য একটি ফাংশন ব্যবহার করা হয়েছে।
  • 2011-03-12 01:19 (284) আর্গুমেন্টটি সামান্য ফাংশনে পরিবর্তিত হয়েছে। কমান্ড পার্সিং মোডের জন্য হুরয়।
  • 2011-03-12 01:22 (266) পুনরাবৃত্তি প্রকাশের জন্য আরও ভেরিয়েবল।
  • 2011-03-12 01:28 (246) এখন প্রতিটি সারিটি ফাংশন দ্বারা উত্পন্ন হয়।
  • 2011-03-12 01:34 (২৩6) যেহেতু আমি অক্ষরগুলি কেবল স্ট্রিং ইন্টারপোলেশনে ব্যবহার করি তাই আমি নিরাপদে সেই %সংখ্যাগুলি থেকে সংখ্যাগুলিকে উপেক্ষা করতে পারি ।
  • 2011-03-12 01:34 (234) ফাংশনে অ্যারে সূচক প্রজন্মকে সামান্যই অনুকূলিত করে।
  • 2011-03-12 01:42 (215) আমার আর দরকার নেই $rএবং $b। এবং $aঅপ্রচলিতও। যেমন আছে$l
  • 2011-03-12 01:46 (207)$OFS কেবল একবার প্রয়োজন হলে সেট করার দরকার নেই ।
  • 2011-03-12 01:49 (202) ইনলাইন করা $f
  • 2011-03-12 01:57 (200) আর বিন্যাসের স্ট্রিংয়ের প্রয়োজন নেই। স্ট্রিং ইন্টারপোলেশনটি ঠিক কাজ করে।
  • 2011-03-12 02:00 (198) স্বতন্ত্র সারিগুলি উত্পন্ন করে (পাইপলাইন এবং অ্যারে সূচকটি পুনরায় অর্ডার করা ) সামান্যভাবে অনুকূলিত।
  • 2011-03-12 02:09 (192)-join যেহেতু আমরা আসলে অতিরিক্ত প্রভাব ব্যবহার করতে পারি ভাল ব্যবহারের প্রয়োজন নেই ।

5

হাস্কেল, 243 টি অক্ষর

z x|x=" (__) ";z _="  ||  "
h[a,b]d f w='|':a:replicate(2+6*length d)'='++b:"|\n"++q z++q(z.not)
 where q b=w>>=(\v->"|| "++(d>>=b.(>v).f)++" ||\n")
s d=h"\\/"d(5-)[-9,0]++h"><"d(`mod`5)[0..4]++h"/\\"d id[]
main=interact$s.map(read.(:[])).init

বিশেষত চালাক নয়। আমি নিশ্চিত যে এটি কোনওভাবে ছোট করা যেতে পারে ...


  • সম্পাদনা করুন: (246 -> 243) ইন্টারঅ্যাক্ট ব্যবহারের জন্য @ FUZxxl এর পরামর্শ নিয়েছে

কীভাবে ব্যবহার করবেনinteract
FUZxxl

প্রথম লাইনটি ছোট করা যেতে পারে z x|x=" (__) "|0<1=" || "
FUZxxl

আপনার বিকল্প প্রথম লাইনটি কেবলমাত্র ছোট কারণ আপনি প্রয়োজনীয় দুটি স্থান ফাঁকা ফেলেছেন!
এমটিএনভিউমার্ক

ওহো! আপনি অবশ্যই ঠিক আছেন।
FUZxxl

4

দেলফি, 348

এই সংস্করণটি কেবল একবার লেখার জন্য একটি স্ট্রিং তৈরি করে; অঙ্কগুলি একটি পৃথক ফাংশন দ্বারা পরিচালিত হয় যা কোনও digit modulo m >= valueকনস্ট্রাক্টের মাধ্যমে কাজ করে (যদি মান <0 হয় তবে অবহেলা করা হয়)।

var d,s,o,p:string;c:Char;i:Int8;function g(m,v:Int8):string;begin p:='|| ';for c in d do p:=p+Copy('  ||   (__) ',1+6*Ord(((Ord(c)+2)mod m>=Abs(v))=(v>0)),6);g:=p+' ||'^J;end;begin ReadLn(d);s:=StringOfChar('=',2+6*Length(d));for i:=1to 5do o:=g(5,6-i)+o+g(5,-i);Write('|\'+s+'/|'^J+g(1,-1)+g(10,-5)+g(1,1)+g(10,5)+'|<'+s+'>|'^J+o+'|/'+s+'\|')end.

দেলফি, 565

প্রথম প্রচেষ্টা :

var _:array[0..6]of string=('  ||  ',' (  ) ','======','|\==/|','||  ||','|/==\|','|<==>|');m:array[0..186]of Byte;o:array[0..16]of string;i,j,c,f,l:Word;begin for i:=0to 9do begin f:=i*17;m[f+1]:=1;m[f+2]:=Ord(i<5);m[f+3]:=0;m[f+4]:=Ord(i>4);for j:=6to 10do m[f+j]:=Ord(i mod 5>j-6);for j:=11to 15do m[f+j]:=Ord(i mod 5<=j-11);m[f]:=2;m[5+f]:=2;m[16+f]:=2;end;f:=170;m[f]:=3;for i:=1to 15do m[f+i]:=4;m[f+5]:=6;m[f+16]:=5;repeat for i:=0to 16do Insert(_[m[f+i]],o[i],l);Read(PChar(@c)^);c:=c-48;f:=c*17;l:=Length(o[0])-2;until c>9;for i:=0to 16do WriteLn(o[i])end.

এটি 3 অ্যারে ব্যবহার করে; 7 টি স্ট্রিংয়ের জন্য একটি যা আলাদা করা যায়, একটি আউটপুট লাইনের জন্য এবং একটিতে 7 টি স্ট্রিংকে 11 টি কলাম (10 ডিজিট এবং 1 প্রাথমিক কলাম) ম্যাপ করতে হবে।


3

গল্ফস্ক্রিপ্ট, ১৩৯ টি অক্ষর

0+17'|':Q*:R'\<||'4Q**'/'+@{48-.5<)[1]*2,2*$+4<\5%[1]*2,5*$+10<+`{{1$=}%+2>'=='1/*5/('='+\+}+'     (|_|_ )'2//}/;;;;'/>||'4Q**'\\'+R]zip n*

এখনও খুব গল্ফ হয়নি, তবে এটি একটি টুইটের সাথে ফিট করে (কেবলমাত্র ASCII সহ)। এখানে চেষ্টা করুন


2

জে, 225

প্রদত্ত দুটি পরীক্ষায় উত্তীর্ণ হয়, কমপক্ষে কয়েকশ অঙ্ক পর্যন্ত কাজ করা উচিত।

c=:2 6$'   ||   (__)'
f=:(2{.[),('='#~2+6*#@]),2}.[
d=:'||',"1'  ||',~"1,"2&(c{~|:)
g=:('|\/|'&f,d&(1,.-.,.0,.])&(4&<),'|<>|'&f,d&(5($!.0"1)0,~"(1)1#~"0|~&5),|.&d&(5($!.0"1)1#~"0(5-5|])),'|/\|'&f)
4(1!:2)~LF,"1 g"."0}:(1!:1)3

প্রথম বন্ধ: হ্যাঁ, হ্যাঁ, গ্রাডিজিং। দ্বিতীয়: এটি সবেমাত্র দীর্ঘ। আচ্ছা ভালো. এটিকে আরও গল্ফ করতে হবে বা ভ্রূণের অবস্থানে কার্ল আপ হয়ে কাঁদতে হবে তা আমি এখনও স্থির করি নি। (অথবা উভয়!)

একটি সংক্ষিপ্ত প্রোগ্রামের পরিবর্তে এখানে কিছুটা ব্যাখ্যা দেওয়া হয়েছে:

  • সি হ'ল ফাঁকা ঘর 2x6 টেবিল, রেন্ডারিংয়ের জন্য পুঁতি ঘর।
  • বাম চারটি অক্ষরের সাথে বাম আর্গুমেন্ট হিসাবে f একটি '=' সারি রেন্ডার করে।
  • d 0/1 ম্যাট্রিক্সকে গুদের কোষে প্যাড করে ||
  • g অঙ্কগুলি নেয় এবং উল্লম্বভাবে অক্ষর সারিগুলি 'বিন্যাসকরণ' সারিগুলির জন্য f এবং অ্যাবাকাস সারিগুলির জন্য ডি ব্যবহার করে সংকলন করে।
  • শেষ সারিটি ইনপুট পায়, অক্ষরে বিভক্ত হয় এবং সেগুলিকে সংখ্যায় রূপান্তর করে, জি-তে ফিড দেয় এবং তারপরে মুদ্রণ করে।

2

সি, 277 274 টি অক্ষর

আপনি জানেন, এটি আমার কাছে মনে হয় আমাদের কাছে কেবলমাত্র পর্যাপ্ত সমাধান নেই যা সত্যিকার অর্থে সি প্রিপ্রসেসরের সুবিধা গ্রহণ করে। আংশিকরূপে এটি কারণ কারণ #defines গুলি আসলে একটি মোটামুটি জায়গা নেয়। কিন্তু এখনও, অনেক সম্ভাবনা আছে। আমি এই ঘাটতিটি সমাধান করার প্রয়োজনীয়তা অনুভব করছি।

#define L(x,z)for(printf("|"x),p=b;*p||puts(#z)<0;++p)printf(
#define F(x,y,z)L(#x,==z|)"======",y);
#define T(y)L("|  ",||)*p-47 y?"(__)  ":" ||   ");
i;char*p,b[99];main(j){gets(b);F(\\,0,/)T()T(<6)T(<1)T(>5)F(<,*p>52?*p-=5:0,>)
for(;++i<6;)T(>i)for(;++j<7;)T(<j)F(/,0,\\)}

এটা ভাল.


2

গণিত 281

w@n_:= Module[{t=Table,f,g},
 f@d_:=ReplacePart["O"~t~{7},{2-Quotient[d,5]-> "|",3+Mod[d,5]-> "|"}];
 g@k_:=IntegerDigits@n~PadLeft~10;
 Grid[Insert[Insert[(f/@g@n)T,"=="~t~{10},{{1},{3},{8}}]T,""~t~{10},{{1},{11}}]T]]

উদাহরণ

w[6302715408]

গণনা-যন্ত্রবিশেষ


10 কে অভিনন্দন! :-D
ডোরকনবব

@Doorknob। ধন্যবাদ! আপনাকেও অভিনন্দন!
ডেভিডসি

1

সি, 548

#define p(a) printf(a);
#define F(x,m) for(x=0;x<m;x++)
#define I(x) {p("||")F(j,l)if(b[l*(i+x)+j]){p("  (__)")}else{p("   || ")}p("  ||\n")}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int a,char* c[]){int i,j,l,m,*b;l=strlen(c[1]);b=(int*)malloc(l*56);m=6*l;F(i,14*l)b[i]=0;
F(j,l){b[j]=1;if(c[1][j]<53){b[l+j]=1;}else{b[3*l+j]=1;c[1][j]-=5;}F(i,5){if(i<c[1][j]-'0'){
b[(i+5)*l+j]=1;}else{b[(i+9)*l+j]=1;}}}p("|\\=")F(i,m)p("=")p("=/|\n")F(i,4)I(0)p("|<=")F(i,m)
p("=")p("=>|\n")F(i,9)I(5)p("|/=")F(i,m)p("=")p("=\\|\n")}

প্রথম সংস্করণ, এখনও অবধি কিছুটা গল্ফ করা।


1

স্কালা (489 টি অক্ষর)

def a(i:String){val b=" (__) ";val n="  ||  ";1 to 17 map{l=>;{print(l match{case 1=>"|\\=";case 6=>"|<=";case 17=>"|/=";case _=>"|| "});print(l match{case 1|6|17=>"======"*i.size;case 2|16=>b*i.size;case 4|11=>n*i.size;case 3=>i flatMap{d=>{if(d.asDigit<5)b else n}};case 5=>i flatMap{d=>{if(d.asDigit>4)b else n}};case _=>i flatMap{d=>{if(l<11)if(d.asDigit%5<l-6)n else b else if(d.asDigit%5>l-12)n else b}}});;print(l match{case 1=>"=/|";case 6=>"=>|";case 17=>"=\\|";case _=>" ||"})}}}

খুব কৃপণ চেষ্টা সত্যিই।


1

স্ক্লিপটিং , 77 টি অক্ষর

অনুগ্রহটি টুইটগুলি বোঝায় এবং টুইটারে অক্ষর গণনা করা হয় (বাইট নয়)। :)

꿓뤽꿓뤽①長復標독렽꿐②껷렊밃겠上❶가侔是丟돃렽꿐②꿧렊不돇렠글⓶①各❷❷걐剩減갰減갰分❸⓷걀大加增增감右與꺅뭟꺒갠⓵긇롼긂갠嗎⓶終丟돇렊終終돂묽꿐②뇇렊

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

ব্যাখ্যা

꿓뤽꿓뤽①長復 | let x = "======" times the length of the input string
標 | mark
독렽꿐②껷렊 | "|\\==" + x + "/|\n"
밃겠上 | for row in [-4 .. 10]
    ❶가侔是 | if row == 0
        丟돃렽꿐②꿧렊 | "|<==" + x + ">|\n"
    不 | else
        돇렠글 | "||  "
        ⓶①各 | foreach char c in input
            | ((r-(c%5)-3)/3 & ((r + (c>4?3:2)) >> 1)) ? "(__) " : " ||   "
            ❷❷걐剩減갰減갰分❸⓷걀大加增增감右與꺅뭟꺒갠⓵긇롼긂갠嗎⓶
        終丟
        돇렊 | "||\n"
    終
終
돂묽꿐②뇇렊 | "|/==" + x + "\\|\n"

আপনার আকর্ষণীয় উত্তরের জন্য ধন্যবাদ। আমি সম্মত হই যে নিয়মটি আঁকানো সবচেয়ে ভাল যে প্রশ্ন জিজ্ঞাসার আগে প্রকাশিত যে ভাষাগুলি কেবল তাদেরই যোগ্য হতে হবে। আমি বিশ্বাস করি না যে আপনি এই চ্যালেঞ্জটি জয়ের জন্য আপনার ভাষাটি ইচ্ছাকৃতভাবে ডিজাইন করেছেন, তবে একই সাথে আমি অন্য উত্তরদাতাদের পক্ষে এটি ন্যায়সঙ্গত মনে করি না, এবং আমরা পুরানো ভাষায় নতুন উদ্ভাবিত ভাষার জন্য বন্যার দ্বার খুলতে চাই না প্রশ্নগুলি যেহেতু আমরা জানি কী হবে ...
gnibbler

@gnibbler: অবশ্যই, আমি এটা ঠিক আছে। আমি মনে করি এই নিয়মটি একটি গুরুত্বপূর্ণ আইন।
টিমউই

1

পাইথন, 309 301 288 অক্ষর

কমপ্যাক্ট সংস্করণ:

q=p,b="  ||  "," (__) "
t="|| %s ||\n"
a=lambda h:t%"".join(q[i]for i in h)
n=[int(d)for d in str(input())]
c=len(n)
e="="*(c*6+2)
h="|\\"+e+"/|"
print h+"\n"+t%(b*c)+a(d<5 for d in n)+t%(p*c)+a(d>4 for d in n)+"|<"+e+">|\n"+"".join(a((d%5>i%5)^(i>4)for d in n)for i in range(10))+h[::-1]

সাফ সংস্করণ:

bead = " (__) "
pole = "  ||  "
template = "|| %s ||\n"
output = ""
def addline(hasbeads):
    global output
    output += template % "".join([bead if item else pole for item in hasbeads])

digits = [int(d) for d in str(input())]
count = len(digits)
equalsigns = "=" * (count * 6 + 2)
output = ""
header = "|\\" + equalsigns + "/|"
output += header + "\n"
output += template % (bead * count)
addline([d < 5 for d in digits])
output += template % (pole * count)
addline([d > 4 for d in digits])
output += "|<" + equalsigns + ">|\n"
for i in range(5):
    addline([d % 5 > i for d in digits])
for i in range(5):
    addline([d % 5 <= i for d in digits])
output += header[::-1]
print output

নোট করুন যে কমপ্যাকটিফিকেশনের জন্য, ভেরিয়েবলগুলি একটি একক অক্ষরে নতুন নামকরণ করা হয়েছিল, এবং তালিকা বোধগম্যদের জেনারেটরে পরিবর্তন করা হয়েছিল যার জন্য অতিরিক্ত বন্ধনী প্রয়োজন হয় না।

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