আসকি শিল্পকে হ্রাস করুন


10

এই চ্যালেঞ্জ একটি হল পেস্ট cut'n থেকে বৃদ্ধি করুন হওয়া ASCII শিল্প কিন্তু বিপরীত ব্যবহার PetSCII ভিত্তিক অর্ধ ব্লক অক্ষর:

string=" ▝▘▀▗▐▚▜▖▞▌▛▄▟▙█"

সুতরাং লক্ষ্য দ্বারা হ্রাস করা হয় 1/2দাখিল । নমুনার জন্য, স্ট্রিং থেকে:

 OOOOOO  OOOOOO  OOOOOO  OOOOOOO      OOOOOO   OOOOOO  OO      OOOOOOO 
OO      OO    OO OO   OO OO          OO       OO    OO OO      OO      
OO      OO    OO OO   OO OOOOO       OO   OOO OO    OO OO      OOOOO   
OO      OO    OO OO   OO OO          OO    OO OO    OO OO      OO      
 OOOOOO  OOOOOO  OOOOOO  OOOOOOO      OOOOOO   OOOOOO  OOOOOOO OO      

আপনাকে রেন্ডার করতে হবে:

 ▟▀▀▘▟▀▀▙▐▛▀▙▐▛▀▀  ▗▛▀▀ ▟▀▀▙▐▌  ▐▛▀▀ 
 █   █  █▐▌ █▐▛▀   ▐▌ ▜▌█  █▐▌  ▐▛▀  
 ▝▀▀▘▝▀▀▘▝▀▀▘▝▀▀▀   ▀▀▀ ▝▀▀▘▝▀▀▀▝▘   

(অথবা এমনকি:

▗▛▀▀▗▛▀▜▖█▀▜▖█▀▀▘  ▟▀▀▘▗▛▀▜▖█   █▀▀▘ 
▐▌  ▐▌ ▐▌█ ▐▌█▀▘   █ ▝█▐▌ ▐▌█   █▀▘  
 ▀▀▀ ▀▀▀ ▀▀▀ ▀▀▀▘  ▝▀▀▘ ▀▀▀ ▀▀▀▘▀    

;-)

বা যেখানে পাইপিং:

wget -O - https://codegolf.stackexchange.com/q/19123/9424 |
    sed -ne '/<pre><code>/,/<\/code><\/pre>/{//{/\//q};s/<pre><code>//;p}'
   ('l2v2l6v2'+  'e1l1v3l2'+
 'v3e1v7e1v7e1v7e1l2v6e1l4v5'+
'e1l6v4e1l8v3e1l7l3v2e1l9l3v1')
 .replace(/[lve]\d/g,function
   (c){return Array(-~c[1]).
      join({l:' ',v:'Love'
         ,e:'\n'}[c[0
             ]])})

দিতে পারে:

▗▟█████▙▟█████▄
▜█████████████▛▘
 ▝▀███▙▛█████▀ 
    ▝▀▜██▀▘

কিছু নমুনা:

এসিআইআরডিউস নমুনা

(প্রায়) একই নিয়ম সহ:

  • STDIN বা ফাইল থেকে ইনপুট
  • প্রতিটি জমা দেওয়া অক্ষরকে প্রতিনিধিত্ব করতে হবে, কেবল শ্বেতস্থানগুলি খালি থাকতে হবে ।
  • এটি তাই সর্বনিম্ন স্কোর জয়। স্কোর হিসাবে গণনা করা হয়:
    • +1অক্ষর দ্বারা, অক্ষরে গণনা করা, বাইটে নয়, যেমন: 20 টি অক্ষর s=' ▝▘▀▗▐▚▜▖▞▌▛▄▟▙█'গণনা , 52 নয় !
    • -10 ব্যাখ্যার জন্য;
    • +20 বাহ্যিক ফন্ট সরঞ্জাম বা গ্রন্থাগার ব্যবহারের জন্য।

সুতরাং পরিষ্কার করতে: ইনপুট চিত্রটি 2x2 স্কোয়ারে বিভক্ত এবং প্রতিটি মানচিত্রকে একটি চরিত্রের মধ্যে বিভক্ত করা হয়েছে?
পিটার টেলর

1
অদ্ভুত বোনাস যুক্ত করার জন্য -0.5 (ব্যাখ্যাটি সংজ্ঞায়িত করুন) - এখনও একটি উত্সাহকে গোল করার পরে। এছাড়াও এটি তখন কোড-চ্যালেঞ্জ এবং কোড-গল্ফ নয়।
হাওয়ার্ড

এই অক্ষরের বেশিরভাগই আমার ব্রাউজারে সঠিকভাবে রেন্ডার করে না। :(
ভিক্টর স্টাফুসা

আমার লিনাক্সের নীচে, আমি xterm -xrm 'XTerm*renderFont:false' &এটি সঠিকভাবে প্রদর্শন করতে সক্ষম একটি কনসোল উইন্ডো খুলতে ব্যবহার করি ।
এফ। হাউরি

উত্তর:


4

গল্ফস্ক্রিপ্ট (90 টি অক্ষর)

n/.,1&[""]*+.{,}%$-1=.1&+{1$,-´' '*+}+%2/{zip 2/{~+0\{32=!1$++}/" ▗▝▐▖▄▞▟▘▚▀▜▌▙▛█"3/=}%n}%

এটি প্রচুর পরিমাণে রাগযুক্ত অ্যারেগুলি পরিচালনা করতে যায়। বাজে পরীক্ষার কেস:

xx
xxx
xxx
xx
x

3 টি পৃথক 2x2 গ্রিডে 4 টির মধ্যে একটির সাথে কোনওরকম অক্ষর রয়েছে।

আরো খারাপ করতে, zipপক্ষান্তরণ জোড়া মধ্যে কলাম কাটতে একই আউটপুট দেয় জন্য ["xx" "xxx"]zipএবং ["xxx" "xx"]zip। অতএব আমি সমস্ত লাইন একই সমান দৈর্ঘ্য এবং লাইনগুলির একটি সমান সংখ্যক আছে তা নিশ্চিত করার জন্য প্যাডিং দিয়ে শুরু করি।

নোট করুন যে এই প্রোগ্রামটি অনুমান করেছে যে অনুবাদক "▗▖▄▝▐▞▟▘▚▌▙▀▜▛█" এর দৈর্ঘ্যের 48 টি স্ট্রিং হিসাবে বিবেচনা করবেন, যদিও প্রশ্নের নির্দেশ অনুযায়ী আমি এটিকে 16 অক্ষর হিসাবে গণনা করছি প্লাস ডিলিমিটার

আমি এটিকে আমার যোগ্যতার সেরাটিতে পরীক্ষা করে দেখেছি, তবে আমি এমন কোনও মনোস্পেস ফন্ট খুঁজে পাই না যা প্রকৃতপক্ষে এই অক্ষরগুলিকে সঠিকভাবে রেন্ডার করে।


আপনার কোডটি হৃদয় দিয়ে দ্বিতীয় পরীক্ষায় ব্যর্থ বলে মনে হচ্ছে ... তবে দুর্দান্ত! আপনি 1 ম হিসাবে +1!
এফ। হাউরি

1
হুম। আমি zipর‌্যাগড অ্যারেগুলিতে ব্যবহার করার ঝোঁক রাখি না , এবং উদাহরণস্বরূপ এটি কী করে বলে মনে হচ্ছে তা থেকে আমি বেশ অবাক হয়েছি ["##" "###"]। আমি আমার পদ্ধতির পুনর্বিবেচনা করতে চলেছি।
পিটার টেলর

ফ্রিমনো, ইউনিফন্ট, কোড 2000 এবং ফিক্সডেসিস এক্সেলসিয়র সমস্ত এই অক্ষরগুলি সঠিকভাবে রেন্ডার করে।
প্রিমো

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

হ্যাঁ! এখন আপনি এটি আছে! সামান্য মন্তব্য: আউটপুট শেষে দুটি খালি লাইন আছে। এটি কোনও নিয়ম ভঙ্গ করবেন না! (দ্রষ্টব্য: স্কোরিং কিছুটা বদলে গেছে, আপনি 10 পয়েন্ট সাশ্রয় করতে পারেন ;-)
এফ হৌরি


0

বাশ (২০৩ টি চর)

#!/bin/bash
r=" ▝▘▀▗▐▚▜▖▞▌▛▄▟▙█";while IFS= read -r m;do IFS= read -r n;for((l=${#m}>${#n}?${#m}:${#n},i=0; i<l; i+=2)){
printf -ve %-2s "${n:i:2}" "${m:i:2}";e=${e//[^ ]/1};o+=${r:2#${e// /0}:1};};echo "$o";o=;done

অথবা

r=" ▝▘▀▗▐▚▜▖▞▌▛▄▟▙█"
while IFS= read -r m; do
    IFS= read -r n
    for ((l=${#m}>${#n}?${#m}:${#n},i=0; i<l; i+=2)) {
        printf -ve %-2s "${n:i:2}" "${m:i:2}"
        e=${e//[^ ]/1}
        o+=${r:2#${e// /0}:1}
    }
    echo "$o"
    o=
done

0

পার্ল (268 টি চর)

#!/usr/bin/perl -CS
use utf8;my $r=" ▝▘▀▗▐▚▜▖▞▌▛▄▟▙█";while(@v=split"",<>){@w=split"",<>;foreach my $i(0..$#v/2){($a,$b,$c,$d)=qw|0 0 0 0|;$a=1if$w[$i*2]=~/\S/;$b=1if$w[$i*2+1]=~/\S/;$c=1if$v[$i*2]=~/\S/;$d=1if$v[$i*2+1]=~/\S/;print substr($r,ord pack("b8",$d.$c.$b.$a),1);};print "\n";};

অথবা

#!/usr/bin/perl -CS
use utf8;
my $r = " ▝▘▀▗▐▚▜▖▞▌▛▄▟▙█";
while ( @v = split "", <> ) {
    @w = split "", <>;
    foreach my $i ( 0 .. $#v / 2 ) {
        ( $a, $b, $c, $d ) = qw|0 0 0 0|;
        $a = 1 if $w[ $i * 2 ] =~ /\S/;
        $b = 1 if $w[ $i * 2 + 1 ] =~ /\S/;
        $c = 1 if $v[ $i * 2 ] =~ /\S/;
        $d = 1 if $v[ $i * 2 + 1 ] =~ /\S/;
        print substr( $r, ord pack( "b8", $d . $c . $b . $a ), 1 );
    }
    print "\n";
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.