এএসসিআইআই আর্ট জেনারেশন


13

কার্য

একটি প্রোগ্রাম বা ফাংশন যা প্রস্থ একটি চিত্র লাগে লিখুন wএবং উচ্চতা hএবং দুটি পূর্ণসংখ্যার a <= w/2এবং b <= h/2সঙ্গে মাত্রা, এবং ইমেজ এর কোন ascii শিল্প উপস্থাপনা আউটপুট, aএক্স b

নিম্নলিখিত পদক্ষেপের (বা একই আউটপুট সহ অন্য কোনও প্রক্রিয়া) মাধ্যমে আসকি শিল্প তৈরি করা উচিত:

  1. মাপ পরিবর্তন করুন wএক্স hছবিতে 2aএক্স 2b(x, y)পুনরায় আকারিত চিত্রের পিক্সেলের রঙ নীচের কোণগুলির সাথে আয়তক্ষেত্রের অভ্যন্তরে মূল চিত্র থেকে সমস্ত পিক্সেলের রঙের গড়ের সমান হওয়া উচিত:

    (floor[x * w/2a], floor[y * h/2b])
    (ceil[(x+1) * w/2a], ceil[(y+1) * h/2b])
    
  2. পুনরায় আকারযুক্ত চিত্রটি রঙের লাল, সবুজ এবং নীল উপাদানগুলির গড় গ্রহণ করে এবং প্রতিটি উপাদানকে এই গড়তে সেট করে আলাদা করা উচিত।

  3. নীচের নিয়মগুলি অনুসরণ করে পিক্সেলের প্রতিটি 2x2 ব্লকের জন্য একটি অক্ষর আউটপুট করা উচিত:

    • চলুন e = 3 - floor[color/64], যেখানে রঙ শীর্ষ-বাম পিক্সেলের রঙের লাল উপাদানকে বোঝায় (0..255 এর মধ্যে রয়েছে)। আসুন f, gএবং hএই মানটি উল্লেখ করুন, তবে যথাক্রমে উপরের-ডান, নীচে-বাম এবং নীচে-ডান পিক্সেলের জন্য।
    • দিন zগড় হতে e, f, g, h
    • নিম্নলিখিতটির সাথে সম্পর্কিত অক্ষরটি আউটপুট করুন (সাদা একটি পিক্সেল যেখানে 3 - floor[color/64]শূন্য, এবং ধূসর ননজারো উপস্থাপন করে)।
    • সমস্ত পিক্সেল শূন্য= একটি স্থান আউটপুট ( )
    • শীর্ষ বাম পিক্সেল ননজারোবা শীর্ষ ডান পিক্সেলটি ননজারো= আউটপুট "যদি e (or f) >= 2এবং 'অন্যথায়।
    • নীচে বাম পিক্সেলটি ননজারোবা নীচের ডান পিক্সেলটি ননজারো= আউটপুট ,যদি g (or h) >= 2এবং .অন্যথায়।
    • শীর্ষ পিক্সেল ননজারোবা নীচে পিক্সেল ননজারো= আউটপুট-
    • বাম পিক্সেল ননজারোবা ডান পিক্সেল ননজারো= আউটপুট;
    • শীর্ষ বাম, নীচে ডান পিক্সেল ননজারো = আউটপুট \
    • উপরের ডানদিকে, নীচে বাম পিক্সেল ননজারো = আউটপুট /
    • শীর্ষ বাম পিক্সেল শূন্য = আউটপুট J
    • শীর্ষ ডান পিক্সেল শূন্য = আউটপুট L
    • নীচে বাম পিক্সেল শূন্য = আউটপুট 7
    • নীচে ডান পিক্সেল শূন্য = আউটপুট P
    • সব ননজারো
      • z = 1: আউটপুট *
      • z = 2: আউটপুট C
      • z = 3: আউটপুট #

অন্যান্য নোট: উপরের পদক্ষেপে গৃহীত সমস্ত গড়ের পূর্ণসংখ্যা বিভাগ (অর্থাত্ 0 এর দিকে গোল করা) ব্যবহার করা উচিত।

আপনি চিত্রগুলি পড়ার জন্য একটি লাইব্রেরি ব্যবহার করতে পারেন, তবে লাইব্রেরিগুলি পুনরায় আকার এবং বিচ্ছিন্নতার পদক্ষেপগুলির জন্য ব্যবহার করা যাবে না।

ইনপুট

আপনার প্রোগ্রামটি ডেটা তিন টুকরা নিতে হবে:

  • একটি চিত্র. এই চিত্রটি আপনার পছন্দের যে কোনও বিন্যাসে থাকতে পারে (যেমন পিএনজি, পিপিএম)
  • আসকি শিল্পের প্রস্থ (অক্ষরের সংখ্যায়)
  • আসকি শিল্পের উচ্চতা (অক্ষরের সংখ্যায়)

ইনপুটটি STDIN এর মাধ্যমে পড়তে পারে, কমান্ড-লাইন আর্গুমেন্ট হিসাবে ভেরিয়েবল হিসাবে সংরক্ষণ করা হয় passed

আউটপুট

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

উদাহরণ

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

লেবুর ছবি

প্রস্থ = 52, উচ্চতা = 25:


            .-- *** - ----।        
          - ********** এল .-- .-- 7 ---- পি-       
        .J ****************। । ********* \।      
       , ****************** এল \ জে ********** '।     
      - ********************। জে *********** এল /     
     জে *********************; ./*************.L    
    ; ********************* পি জে **************; 7;   
   । ********************** '। *************** ;; *   
   ; **********************; ***************; জে *।  
   *********************** ******* পি ******** '**;  
   সি ********************* সি ******* পি; *******। **;  
   সি ********************** জে ***************; **;  
   সি *********************; **************** **।  
   ********************** '*************** পি; **   
  জে ********************* পি *************** / ***   
 । ********************** 7 ************* 'জে **;   
 ; ******************** সি "'পি *********** পিজে ***'   
 "7 ****************** সি" '********** পি। ** সি;    
     '* সি *************'; ********* - জে ** সিপি     
      '* সি ********** পি 7 ** 7 ** পি / - **** পি      
        - * সিসিসিসি * পি- '* ******** পি'       
          '---' --- '          

প্রস্থ: 70, উচ্চতা: 3:

         ---------------------------। .----------------        
    জে *************************** পি-জে ***************** *** / জে **;   
  ---------- ********* পি --------- '-------------------- - '        

আলু

প্রস্থ: 50, উচ্চতা: 25:





        .J ---                                     
      .জে * পি --- জে * এল--।          
     জে *** 'এল-জে *********** -        
    জে ****; **************** এল       
   ; ***** '। জে ********************     
   জে **** 7 ************************ পি  
   ** সিসি *; । ********* এলজে *********** P-   
   ** সি * পি 'জে ********************** -    
   7 * সি * এল **********************;     
   জে * সি **; **********************;     
  জেসি ** সি **। ; ; ******** সিসিসি * সি ** cccc **      
  "* ***** এল। * ***** সিসিসিসিসি **** সিসি ** '      
     - *****। -জে - ** সি * সি * সিসি ****** সিসি * '       
      ; ** সিসি ***; '** সিসিসি ***** cccc *;        
       '- **** - - *** সিসিসিসি *** -         
                               '------'           




ক্লিপার্ট নমুনা

প্রস্থ: 26, উচ্চতা: 17:

    -, এল 
  জে - ** এল সি সি # 
 জে ;; পিএল, সি # " 
.পিপি 7. জেসি 7 পি  
;; * জে ;; , C'C;  
জে; সিসি; এল সি "#   
* এল 7-পি; *; পিসি   
7 সিএল *** জে * পিসি '#   
'7 # সি * সি # পি'; পি জেসি # সি- 
 জে # সিসিসি # এল। জেসি # সিজেসিসি ## সি;
; # - - #, সিসিসি # সিসিসিসিসিসিসি
; * .- -সি; ; CCCCCCCCCCCC
; **** জে ** এল; সিসিসিসিসিসিসিসিসিসিসি
; *******; 'CCCCCCCCCCCP
'*******' সিসিসিসিসিসিসিসিসিসিসি '
 '* পি -7 *' "সিসিসিপি '-  
               '---       

এটি , তাই সংক্ষিপ্ত উত্তরটি জেতে।


2
স্থির পঙ্গু চ্যালেঞ্জ .... ....
Abr001 এএম

আপনি যখন চিত্র ইনপুট বলছেন, আপনি কি কোনও ফাইলের নাম বোঝাতে চান? নাকি আসল চিত্রের ডেটা?
sirpercival

@ সিরপারসিভাল হয় ঠিক আছে
es1024

উত্তর:


6

জাভাস্ক্রিপ্ট 752701

function Z(I,a,b){
    var C=document.createElement('canvas')
    var W=C.width=I.width,H=C.height=I.height,X=C.getContext('2d')
    X.drawImage(I,0,0)
    a*=2,b*=2,W/=a,H/=b
    for(var o=a*b,x=0,y=0,T="",S=[],V;--o;){
        var A=~~(x*W),B=~~(y*H)
        var d=X.getImageData(A,B,(((x+1)*W)<<0)-A,(((y+1)*H)<<0)-B).data
        for(var i=0,p=0,L=d.length;i<L;i+=4)p+=(d[i]+d[i+1]+d[i+2])/3
        p/=L/4
        S[x]=3-(p>>6)
        if(x%2&&y%2){
            var e=V[x-1],f=V[x],g=S[x-1],h=S[x],z=(e+f+g+h)>>2,B=0,c
            B|=e>0?8:0,B|=f>0?4:0,B|=g>0?2:0,B|=h>0?1:0
            c=" ..-';\\J'/;L-7P*".charAt(B)
            c=c=="'"&&(e>1||f>1)?'"':c
            c=c=="."&&(g>1||h>1)?",":c
            T+=c=="*"?z>2?"#":z>1?"C":c:c
        }
        if(++x==a)x=0,y++,V=S,T+=y%2?"\n":"",S=[]
    }
    return T
}

উদাহরণ:

var items = {
    lemons: {w:52, h:25},
    spuds: {w:50, h:25},
    tux: {w:26, h:17}
};

for(var k in items) {
    var val = items[k];
    var img = new Image();
    img.onload = function() {
        console.log(Z(this,this.w,this.h));
    }
    img.src=k+'.png';
    img.w = val.w;
    img.h = val.h;
}

লেবু:

            .--JJL--                   .---.        
          -**********-.--          .--7----P-       
        .J***************L.       .*********\.      
       .******************L      \J**********'.     
      .********************.     ;***********L/     
     J*********************;   ./*************.L    
    ,*********************P    -**************;7;   
    **********************'   .***************;;*   
   ;**********************    ;***************;;*.  
   ***********************    *******PP*******'J*;  
   ***********************    *******P;*******.**;  
   ***************7*******    J******;J*******;**;  
   **********************;    ****************.**;  
   **********************'    ***************P;**'  
  J*********************P     ***************/***   
 .**********************      7*************'J**P   
 ;*********************"      '\***********PJ***'   
 "7*******************"        '**********P.***;    
     '***************'         ;*********-J***P     
      '************P'           7*-7**P/-****P      
        -*******P-               '7********P'       
          '---                       -----          

Spuds:

         J---                                     
      .J*P                     .---*L--.          
     J***'                L -J***********-        
    J****                ;****************L       
   ;*****'             .J******************L*     
   J***L7              ************************P  
   **CC*    .         .*********L'***********P-   
   **C*P    '         J**********************-    
   7*C*L              **********************;     
   J*C**.             **********************;     
  JC**C**      .      7********CCC****CCCC**      
  "7*****L     .       7*****CCCCCC****CC**'      
     -****L. .J         -**C*C**C*******C*'       
      ;**CC***;          '**CCC*****CCCC*;        
       '-****-             --**CCCCCC***-         
                               '------'           

টাক্স:

                       ,L 
  --**L                C#'
 J';*P-L             ,C#" 
 P  7  7.           ,C7P  
;; J J ;;          ,C"C;  
;; C C  L          C" C   
*L 7-P ;*         ;P  #   
;CL***J**         C'  #   
'7#C*C#C'        ,P JC#C- 
 J#CCC#L      .JCCLJCC##C,
.#-   -#,     JCC#CCCCCCCC
;C.- -.*;    .CCCCCCCCCCCC
;L***J**C    ;CCCCCCCCCCCC
;*******P    'CCCCCCCCCCCP
'*******"     CCCCCCCCCCC'
 '*P-7*'      "CCCCP "--  
               '---       

2

IDL 8.3, 588 597 588 বাইট

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

pro c,m,a,b
e=2*a
f=2*b
s=size(m,/d)/[1.,e,f]
g=intarr(3,e,f)
u=floor([0:e-1]*s[1])
x=ceil([1:e]*s[1])-1
v=floor([0:f-1]*s[2])
y=ceil([1:f]*s[2])-1
n=(x-u)#(y-v)
for k=0,2 do for i=0,e-1 do for j=0,f-1 do g[k,i,f-j-1]=total(m[k,u[i]:x[i],v[j]:y[j]],/i)/n[i,j]
g=3-total(g/192,1,/i)
t=intarr(4,a,b)
for i=0,3 do t[i,*,*]=g[rebin([0:a-1]*2+i mod 2,a,b),rebin(2#[0:b-1]+i/2,a,b)]
w=total((t ne 0)*rebin(2^[0:3],4,a,b),1,/i)
for i=0,3 do w+=(w eq 2^i)*(t ge 2)[i,*,*]*(18-2^i+i/2)
w+=(w eq 15)*(total(t,1,/i)/4-1)
print,strmid(' '+"''"+'-.;/P.\;7-LJ*C#",',w[*],1),f='('+strtrim(a,2)+'A1)'
end

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

IDL> c,read_png('lemons.png'),52,25


            .-J***L-.                 .----.        
          -**********L.--          .J-*LJJ**-       
        .J****************.       J*********J.      
       ,*******************      /J**********7.     
      J********************.    ;J***********L*     
     J*********************;   .\*************/L    
    ;*********************P    ***************;*;   
   .C*********************'   ;***************;**   
   J**********************    J***************;**.  
   ***********************    ****************'**;  
   C*********************C    ********J*******;**;  
   C**********************    *******************;  
   C*********************P   ;****************7**;  
  .**********************'    ***************PJ**'  
  J*********************P     ***************\***   
 .**********************      7*************'***P   
 ;********************C"      ;************PJ**C'   
 "7******************C"        ***********PJ***;    
     '*C*************"         ;*********7J**CP     
      '*C*********CP'           7*****P\-***CP      
        -*CCCCC*P-               '7********P"       
          '---                       -----          

IDL> c,read_png('lemons.png'),70,3
        --------J**********L--------.       .-----------------        
   .J*****************************P'    -*************************;   
  ---------*************P-------         '------7**********P-----  
IDL> c,read_png('potatoes.png'),50,25





         J-"-                                     
      .J*'                     ----JL--           
     -*C*                 * -J***********-        
    J*C*L                ;****************L       
   .*C*-*              .J********************     
   J*CC;-              ********************C**CP  
   *CC#*    7         .**********************P-   
   *CCC;    '         J**********************-    
   7CCCL              **********************;     
   JCCC*.             ****C*C*****CCCC*CC***;     
  ;C*CCCL      .      ;***CC*CCCCCCCCCCCCC**      
  "--*CCC;             7***CCCCCCCCCCCCCCC*'      
     '7CC*L.  .         -*CCCCCCCCCCCCCCCP'       
       7CCCCC*'           7CC#CCCCCCC###P         
        '-7P-'             '-7CC######C-          
                                 '-'              




IDL> c,read_png('penguin.png'),26,17
                       ,L 
      ,                C# 
 "  #- ;             ,##" 
 ;  -  ;            ,#7;  
;" - - ";          ,#"J"  
;  # #  ;          #" #   
;; .-. ,;         ;;  #   
;#-***-#;         #   #   
 7#C*C#P         ,P -C#C, 
 J##-##L       JCCL-CC#CC,
,#"   "#,     JCC#CCCCCCCL
;L.- -.C;    ,CCCCCCCCCCCC
;***L***;    ;CCCCCCCCCCCC
;*******;     CCCCCCCCCCC;
 *** ***"     CCCCCC7CCCP 
 '*P--*'      "CCCCP "-"  
                --"       
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.