লাইনের মধ্যে


31

এখানে চিত্র বর্ণনা লিখুন

অন্য দিন স্কোয়ার-শাসিত কাগজে ডুডল করার সময়, আমি অঙ্কগুলির জন্য উপরের নেতিবাচক-স্পেস ফন্ট নিয়ে এসেছি। আপনি যদি এখনও এটি চিহ্নিত না করে থাকেন তবে উপরের আকারগুলির মধ্যে ফাঁকা স্থানগুলি সোনালি অনুপাত দেয় 1.618033988749 । এই চ্যালেঞ্জে আপনার কাজটি হ'ল একটি সংখ্যা ইনপুট হিসাবে নেওয়া এবং এটি উপরে বর্ণিত উদাহরণের মতো ঠিক রেন্ডার করা।

এগুলি কীভাবে তৈরি হয় তা এখানে। সমস্ত লাইনগুলি নিয়মিত গ্রিডে থাকবে, যাতে স্বতন্ত্র অঙ্কগুলি কয়েকটি সংখ্যক গ্রিড কোষ দিয়ে তৈরি হয়। এখানে 10 সংখ্যার আকার রয়েছে (আমরা এই চ্যালেঞ্জের দশমিক পয়েন্টটি উপেক্ষা করব):

এখানে চিত্র বর্ণনা লিখুন
হ্যাঁ, শীর্ষে থাকা সোনালী অনুপাতের উদাহরণ থেকে 7 টি পৃথক। আমি কিন্ডা গণ্ডগোল। আমরা এই এক সাথে যাব।

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

এখানে চিত্র বর্ণনা লিখুন

লক্ষ্য করুন যে আমরা একটি শীর্ষস্থানীয় এবং পিছনে থাকা খালি কলামটি যুক্ত করব। এখন আমরা ঘরগুলি উল্টেছি:

এখানে চিত্র বর্ণনা লিখুন

ফলাফলটি তখন বহুভুজগুলির সীমানা হওয়া উচিত:

এখানে চিত্র বর্ণনা লিখুন

অবশ্যই আপনি ফলাফলটি অন্য কোনও উপায়ে তৈরি করতে পারবেন, যতক্ষণ না রেন্ডার আউটপুট একই দেখায় looks

ইনপুট

  • আপনি STDIN (বা নিকটতম বিকল্প), কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন যুক্তি, স্ট্রিং হিসাবে বা অঙ্কের তালিকা হিসাবে ইনপুট নিয়ে একটি প্রোগ্রাম বা ফাংশন লিখতে পারেন। (আপনি এমন একটি সংখ্যা নিতে পারবেন না যা আপনাকে নেতৃস্থানীয় জিরোগুলিকে সমর্থন করতে দেয় না))
  • আপনি ধরে নিতে পারেন যে ইনপুটটিতে আর 16 অঙ্ক থাকবে না।

আউটপুট

  • আউটপুট হয় স্ক্রিনে প্রদর্শিত হতে পারে বা একটি সাধারণ চিত্র বিন্যাসে একটি ফাইল লিখিত হতে পারে।
  • আপনি রাস্টার এবং ভেক্টর গ্রাফিক্স উভয়ই ব্যবহার করতে পারেন।
  • উভয় ক্ষেত্রেই, অন্তর্নিহিত গ্রিডের কোষগুলির অনুপাতের অনুপাত 1 হতে হবে (অর্থাৎ, কোষগুলি বর্গাকার হওয়া উচিত)।
  • রাস্টার গ্রাফিক্সের ক্ষেত্রে, প্রতিটি ঘরে কমপক্ষে 20 বাই 20 পিক্সেল কভার করা উচিত।
  • লাইনগুলি অবশ্যই সেল আকারের 10% এর চেয়ে বেশি বিস্তৃত হওয়া উচিত। আমি এখানে এলিয়াসের কারণে এক বা দুটি পিক্সেল ছেড়ে দিতে রাজি আছি।
  • লাইন এবং ব্যাকগ্রাউন্ড যে কোনও দুটি স্পষ্টত পৃথক রঙ হতে পারে, তবে লাইনগুলি দ্বারা তৈরি আকারগুলি অবশ্যই পূরণ করা উচিত নয় (এটি অভ্যন্তরের অভ্যন্তরের পাশাপাশি পটভূমির রঙও হওয়া উচিত)।
  • প্রতিটি বদ্ধ লুপের মধ্যে কোনও ফাঁক থাকতে হবে না।
  • অবশ্যই, পুরো ফলাফলটি দৃশ্যমান হতে হবে।

পরীক্ষার মামলা

এখানে 10 টি ইনপুট রয়েছে, যা সংলগ্ন অঙ্কগুলির সমস্ত সম্ভাব্য জোড়, পাশাপাশি প্রতিটি সম্ভাব্য শীর্ষস্থানীয় এবং পিছনের অঙ্ককে একসাথে কভার করে:

07299361548
19887620534
21456837709
39284106657
49085527316
59178604432
69471338025
79581224630
89674235011
97518264003

এবং এখানে তাদের জন্য প্রত্যাশিত ফলাফল:

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

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


ASCII শিল্প গ্রহণ করা হবে?
ব্লু

2
@ ব্লু আমি মনে করি এটি একটি খুব আলাদা কাজের জন্য তৈরি করবে এবং উত্তরগুলি খুব কমই তুলনীয় হবে, তাই না, দুঃখিত। আমি সাধারণত একক চ্যালেঞ্জের মধ্যে গ্রাফিকাল আউটপুট এবং এএসসিআইআই আর্ট মিশ্রনের অনুরাগী নই।
মার্টিন এেন্ডার

ঠিক আছে, দ্রুত উত্তরের জন্য ধন্যবাদ
ব্লু

এটি ফন্ট আমদানি করার অনুমতি আছে?
মারভ

@ মারভ এইচএম, আকর্ষণীয় প্রশ্ন। আমি বলতে চাই যে আপনার ক্ষেত্রে ফন্ট ফাইলের আকারটি গণনা করা উচিত।
মার্টিন এেন্ডার

উত্তর:


1

বিবিসি বেসিক, 182 এএসসিআইআই অক্ষর (টোকেনাইজড ফাইলাইজ 175 বাইট)

Http://www.bbcbasic.co.uk/bbcwin/bbcwin.html এ দোভাষী ডাউনলোড করুন

I.n$
F.j=0TOLENn$*4p=ASCM."?@\@?[@_?DTP?TT@?pv@?PTD?@TD?||@?@T@?PT@",VALM.n$,j/4+1,1)*4+1+j MOD4)F.k=0TO4p*=2q=64A.p
V.537;q;0;2585;0;q;537;-q;0;2585;0;-q;25;0;64;
N.MOVEBY 64,-320N.

স্কোরিং: উপরের প্রোগ্রামটি সম্পাদকটিতে আটকানো এবং চালানো হলে সম্পাদকটি সংক্ষিপ্ত কীওয়ার্ডগুলি অনস্ক্রিনে পুরো কীওয়ার্ডগুলিতে প্রসারিত করবে, যদিও টোকেনিসেশনের পরে এগুলি আসলে 1 বাইট। (উদাহরণ I.= INPUTস্টোরেজ স্পেস 1 বাইট।)

ব্যাখ্যা

আমি কেবলমাত্র ভিডিইউ লাইনটি কী তা ব্যাখ্যা করব: এটি স্ক্রিনে বর্তমান পিক্সেল রঙটি বিট-ফ্লিপ করে একটি বক্স আঁকবে। এর অর্থ হল (কোণগুলির সাথে কিছুটা যত্ন নিয়ে) কেবল একে অপরের পাশে একটি ঘর আঁকানো সম্ভব এবং মধ্যস্থতাকার প্রান্তটি বাতিল হয়ে যাবে এবং ডাবল অঙ্কনের কারণে অদৃশ্য হয়ে যাবে।

ঘনিষ্ঠ পরীক্ষাটি প্রকাশ করবে যে কোনও কক্ষের উপরের ডান এবং নীচে বাম কোণগুলি অঙ্কিত হয়েছে তবে এই কাজটি করার জন্য উপরের বাম এবং নীচে ডান অনুপস্থিত ("বৃত্তাকার") রয়েছে।

ঘর আঁকার পরে, গ্রাফিক্স কার্সারটি 32 পিক্সেল উপরে সরিয়ে নেওয়া হবে এবং পরবর্তী ঘরটি আঁকতে হবে।

প্রোগ্রামটির বাকি অংশগুলি মোটামুটি সোজা ASCII বিটম্যাপ ডিকম্প্রেশন। বিটম্যাপটি যেভাবে সঙ্কুচিত হয় তার সাথে গল্ফিং / সামঞ্জস্যতার জন্য কক্ষের মাত্রাগুলি x৪x৪৪ ইউনিট। qপ্লট করা কক্ষের আকারটি নিয়ন্ত্রণ করে: উপস্থিত একটি কক্ষের জন্য x৪x৪৪৪ ইউনিট, অনুপস্থিত একটি কোষের জন্য 0x0।

অবহেলিত কোড

  m$="?@\@?[@_?DTP?TT@?pv@?PTD?@TD?||@?@T@?PT@" :REM bitmap for digits, including column of filled cells at left. BBC strings are 1-indexed
  INPUTn$                                       :REM user input
  FORj=0 TO LENn$*4                             :REM iterate 4 times per input digit, plus once more (plot column 0 of imaginary digit to finish)
    d=VAL MID$(n$,j/4+1,1)                      :REM extract digit from n$ (1-character string). VAL of empty string = 0, so 123->1,1,1,1,2,2,2,2,3,3,3,3,0
    p=ASC MID$(m$,d*4+1+j MOD4)                 :REM get column bitmap from m$ d*4 selects digit, j MOD4 selects correct column of digit, add 1 to convert to 1-index
    FORk=0TO4                                   :REM for each cell in the column
      p*=2                                      :REM bitshift p
      q=64ANDp                                  :REM find size of cell to draw. 64 for a filled cell, 0 for an absent cell.
      VDU537;q;0;                               :REM line q units right, inverting existing screen colour. Draw last pixel (will be inverted next line)
      VDU2585;0;q;                              :REM line q units up, inverting existing screen colour. Dont draw last pixel (will be filled in next line)
      VDU537;-q;0;                              :REM line q units left, inverting existing screen colour. Draw last pixel (will be inverted next line)
      VDU2585;0;-q;                             :REM line q units down, inverting existing screen colour. Dont draw last pixel (avoid inverting 1st pixel of 1st line)
      VDU25;0;64;                               :REM move up 64 units for cell above
    NEXT
    MOVEBY 64,-320                              :REM move right and down for next column.
  NEXT

আউটপুট

MOVEএসগুলি কেবল স্ক্রিনে উপযুক্ত উচ্চতায় আউটপুট পাবে। বিবিসি বুনিয়াদি এই মোডে 2 ইউনিট = 1 পিক্সেল ব্যবহার করে, তাই ঘরগুলি আসলে 32x32 পিক্সেল els

এখানে চিত্র বর্ণনা লিখুন


10

অক্টাভা, 233 225 216 213 বাইট

o=@ones;l=z=o(5,1);for k=input('')-47;l=[l,reshape(dec2bin([448,22558,8514,10560,3936,2376,328,15840,320,2368](k),15),5,[])-48,z];end;L=~o(size(l)+2);L(2:6,2:end-1)=l;O=o(3);O(5)=-8;M=~conv2(kron(L,o(25)),O);imshow(M)

এখানে প্রথম পরীক্ষার কেস (একটি আকার পরিবর্তনকারী স্ক্রিন ক্যাপচার থেকে, এটি আমার মনিটরের সাথে ফিট করে =): এখানে চিত্র বর্ণনা লিখুন

o=@ones;
l=z=o(5,1);                   %spacer matrices
for k=input('')-47;           %go throu all input digis
                              %decode the matrices for each digit from decimal
l=[l,reshape(dec2bin([448,22558,8514,10560,3936,2376,328,15840,320,2368](k),15),5,[])-48,z];
end
L=~o(size(l)+2);           %pad the image
L(2:6,2:end-1)=l;
O=o(3);O(5)=-8;               %create edge detection filter
imshow(~conv2(kron(L,o(25)),O)) %image resizing /edge detection (change 25 to any cell size you like)

ইনপুটটি নির্বিচারে দৈর্ঘ্য হতে পারে, যেমন '07299361548'

সংকল্প সাফল্যের মূল চাবিকাঠি।


একগুচ্ছ বাইট =) দ্বারা স্কোরটি উন্নত করার জন্য @ লুইস মেন্দোকে ধন্যবাদ জানাই =)
flawr

2
কনভলিউশনের সাথে আমি আরও একমত হতে পারি না সাফল্যের মূল চাবিকাঠি :-)
লুইস মেন্ডো


5

জাভাস্ক্রিপ্ট ES6, 506 বাইট

a=>{with(document)with(body.appendChild(createElement`canvas`))with(getContext`2d`){width=height=(a.length+2)*80;scale(20,20);translate(1,1);lineWidth=0.1;beginPath();["oint",...a.map(i=>"05|7agd7|oint 067128a45|oicgmnt 01de25|oil9amnt 01de23fg45|oint 03fh5|68ec6|oint 03fg45|oij78knt 05|9agf9|oij78knt 01dh5|oint 05|78ed7|9agf9|oint 03fg45|78ed7|oint".split` `[i]),"05"].map(i=>{i.split`|`.map(i=>[...i].map((e,i,_,p=parseInt(e,36),l=~~(p/6),r=p%6)=>i?lineTo(l,r):moveTo(l,r)));translate(4,0)});stroke()}}

Ungolfed:

a=>{                                            // anonymous function declaration, accepts array of numbers
  with(document)                                // bring document into scope
  with(body.appendChild(createElement`canvas`)) // create canvas, drop into html body, bring into scope
  with(getContext`2d`){                         // bring graphics context into scope
    width=height=(a.length+2)*80;               // set width and height
    scale(20,20);                               // scale everything to 20x
    translate(1,1);                             // add padding so outline doesn't touch edge of canvas
    lineWidth=0.1;                              // have to scale line width since we scaled 20x
    beginPath();                                // start drawing lines
    ["oint",                                    // beginning "glyph", draws left end of negative space, see below
     ...a.map(i=>`05|7agd7|oint                 // glyphs 0-9 encoded as vertices
                  067128a45|oicgmnt             //   glyphs seperated by " "
                  01de25|oil9amnt               //   lines within each glyph seperated by "|"
                  01de23fg45|oint               //   a single vertex is stored as a base36 char
                  03fh5|68ec6|oint              //     where a number corresponds to one of the verts shown below:
                  03fg45|oij78knt               //        0  6 12 18 24
                  05|9agf9|oij78knt             //        1  7 13 19 25
                  01dh5|oint                    //        2  8 14 20 26
                  05|78ed7|9agf9|oint           //        3  9 15 21 27
                  03fg45|78ed7|oint`            //        4 10 16 22 28
       .split` `[i]),                           //        5 11 17 23 29
     "05"]                                      // end "glyph", draws right end of negative space, see above
      .map(i=>{                                 // for each glyph string
        i.split`|`                              // seperate into list of line strings
          .map(i=>[...i]                        // convert each line string into list of chars
            .map((e,i,_,p=parseInt(e,36),       // convert base36 char to number
                  l=~~(p/6),r=p%6)=>            // compute x y coords of vertex
              i?lineTo(l,r):moveTo(l,r)));      // draw segment
        translate(4,0)});                       // translate origin 4 units to right
    stroke()}}                                  // draw all lines to canvas

ধরে নিই <body>ফায়ারফক্স 46-এ পরীক্ষা করা হয়েছে, ক্যানভাসে যুক্ত করার একটি রয়েছে ।

উদাহরণ রান (এফ বেনামী ফাংশন নির্ধারণ):

f([1,0,3])

উৎপাদনের:

উদাহরণ আউটপুট


5

এইচটিএমএল + জাভাস্ক্রিপ্ট ইএস 6, 352

নীচে স্নিপেট চলমান পরীক্ষা করুন

<canvas id=C></canvas><script>s=prompt(),C.width=-~s.length*80,c=C.getContext("2d"),[...s].map(d=>[30,d*=3,++d,++d].map(w=a=>{for(a=parseInt("vhvivgtlnllv74vnltvlt11vvlvnlv0"[a],36)*2+1,p=1,y=100,i=64;i>>=1;p=b,y-=20)c.moveTo(x+20,y),b=a&i?1:0,c[b-p?'lineTo':'moveTo'](x,y),(a^q)&i&&c.lineTo(x,y-20);q=a,x+=20}),q=63,x=0),w(30),w(0),c.stroke()</script>

কম গল্ফড

s=prompt(),C.width=-~s.length*80,c=C.getContext("2d"),
w=a=>{
  a=parseInt("vhvivgtlnllv74vnltvlt11vvlvnlv0"[i],36)*2+1
  for(p=1,y=100,i=32;i;p=b,y-=20,i>>=1)
    c.moveTo(x+20,y),
    b=a&i?1:0,
    c[b-p?'lineTo':'moveTo'](x,y),
    (a^q)&i&&c.lineTo(x,y-20)
  q=a 
  x+=20
},
[...s].map(d=>[30,d*=3,++d,++d].map(w),q=63,x=0),
w(30),w(0)
c.stroke()

1
আমি মনে করি না যে আপনার সমাপনী স্ক্রিপ্ট ট্যাগটি দরকার ...
মামা ফান রোল

3

জাভা, 768 বাইট

import java.awt.*;import java.awt.image.*;class G{public static void main(String[]v)throws Exception{int s=20,n=v[0].length(),i=0,j,w=(n*3+n+1)*s,h=5*s,a[][]={{6,7,8},{0,2,3,10,11,12,13},{1,6,8,13},{1,3,6,8},{3,4,5,6,8,9},{3,6,8,11},{6,8,11},{1,2,3,4,6,7,8,9},{6,8},{3,6,8}};BufferedImage o,b=new BufferedImage(w,h,1);Graphics g=b.getGraphics();g.setColor(Color.WHITE);for(;i<n;i++)for(j=0;j<15;j++){int c=j;if(java.util.Arrays.stream(a[v[0].charAt(i)-48]).noneMatch(e->e==c))g.fillRect((1+i*4+j/5)*s,j%5*s,s,s);}o=new BufferedImage(b.getColorModel(),b.copyData(null),0>1,null);for(i=1;i<h-1;i++)for(j=1;j<w-1;j++)if((b.getRGB(j+1,i)|b.getRGB(j-1,i)|b.getRGB(j,i+1)|b.getRGB(j,i-1))<-1)o.setRGB(j,i,-1);javax.imageio.ImageIO.write(o,"png",new java.io.File("a.png"));}}

Ungolfed

import java.awt.*;
        import java.awt.image.BufferedImage;

class Q79261 {
    public static void main(String[] v) throws Exception {
        int scale = 20, n = v[0].length(), i = 0, j, width = (n * 3 + n + 1) * scale, height = 5 * scale, values[][] = {{6, 7, 8}, {0, 2, 3, 10, 11, 12, 13}, {1, 6, 8, 13}, {1, 3, 6, 8}, {3, 4, 5, 6, 8, 9}, {3, 6, 8, 11}, {6, 8, 11}, {1, 2, 3, 4, 6, 7, 8, 9}, {6, 8}, {3, 6, 8}};
        BufferedImage output, temp = new BufferedImage(width, height, 1);
        Graphics g = temp.getGraphics();
        g.setColor(Color.WHITE);
        for (; i < n; i++)
            for (j = 0; j < 15; j++) {
                int finalJ = j;
                if (java.util.Arrays.stream(values[v[0].charAt(i) - 48]).noneMatch(e -> e == finalJ))
                    g.fillRect((1 + i * 4 + j / 5) * scale, j % 5 * scale, scale, scale);
            }
        output = new BufferedImage(temp.getColorModel(), temp.copyData(null), 0 > 1, null);
        for (i = 1; i < height - 1; i++)
            for (j = 1; j < width - 1; j++)
                if ((temp.getRGB(j + 1, i) | temp.getRGB(j - 1, i) | temp.getRGB(j, i + 1) | temp.getRGB(j, i - 1)) < -1)
                    output.setRGB(j, i, -1);
        javax.imageio.ImageIO.write(output, "png", new java.io.File("a.png"));
    }
}

নোট

  • ইনপুট আর্গুমেন্ট হিসাবে একক স্ট্রিং। কিভাবে ব্যবহার করার জন্য: javac G.java,java G 80085

  • আমি একটি কালো ক্যানভাস দিয়ে শুরু করছি, তারপরে আমি সংখ্যাগুলি সাদা ধনাত্মক হিসাবে যুক্ত করছি। আমি চিত্রটির একটি অনুলিপি তৈরি করি এবং তারপরে প্রতিটি কালো পিক্সেলটি ফ্লিপ করব যার আসল চিত্রটিতে 4 কালো প্রতিবেশী রয়েছে।

আউটপুট

0 1 2 3 4 5 6 7 8 9

কিছু একক সংখ্যা:

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন


java.awt। * তে java.awt.image.BufferedImage থাকে না?
এলিমেন্ট 118

পছন্দ করেছেন
মার্ভ

2

আর, গল্ফের কাছে অনেকগুলি বাইট ( 1530+ 1115)

library(reshape2);library(ggplot2);library(png)
M=matrix(1,5,3)
M=lapply(list(c(7:9),c(1,3,4,11:14),c(2,7,9,14),c(2,4,7,9),c(4:7,9,10),c(4,7,9,12),c(7,9,12),c(2:5,7:10),c(7,9),c(4,7,9)),function(x){M[x]=0;M})
g=function(P){
S=matrix(0,5,1)
R=NULL
for(N in P){R=Reduce(cbind2,list(R,S,M[[N+1]]))}
cbind(R,S)}
p=function(P){
o=t(apply(g(P),1,rev))
ggplot(melt(o),aes(x=Var1,y=Var2))+geom_raster(aes(fill=value))+coord_flip()+scale_fill_continuous(guide=FALSE,high="#FFFFFF",low="#000000")+scale_y_reverse()+scale_x_reverse()+theme_bw()+theme(panel.grid=element_blank(),panel.border=element_blank(),panel.background=element_blank(),axis.title=element_blank(),axis.text=element_blank(),axis.ticks=element_blank(),plot.margin=unit(c(0,0,0,0),"mm"))+ggsave("t.png",width=dim(o)[2]/2.5,height=2,units="in",dpi=99)
q=readPNG("t.png")
k=q[,,1]
b=replace(k,k==1,0)
for(i in 1:nrow(k)){
for(j in 1:ncol(k)){
u=(i==nrow(k))
v=(j==ncol(k))
if(u&v){b[i,j]=1;break}
if((i==1)|u|(j==1)|v){b[i,j]=1;next}else{if(all(k[c((i-1):(i+1)),c((j-1):(j+1))])){b[i,j]=1}else{b[i,j]=0}}}}
q[,,1:3]=abs(replace(k,b==1,0)-1)
writePNG(q,"t.png")}

# run p(c(0,1,2,3,4,5))

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

ডিস্কে লেখার সময় লোল, তারপরে ডিস্ক থেকে পড়াতে ব্ল্যাক ফিল পূরণ করুন।


2

পাইথন 3, 326 325 বাইট

import numpy
from skimage import io,transform as t,filters as f
r=[[1]*5,[0]*5]
for c in map(int,input()):r+=[map(float,bin(0x3f1fa7e1bd7b5aff84ff6b7fd6f087ff5ff6bf)[2:][15*c+5*i:15*c+5*-~i])for i in[0,1,2]]+[[0]*5]
r+=[[1]*5]
p=[[1]*len(r)]
r=p+list(zip(*r))+p
io.imsave("o.png",1-f.sobel((t.rescale(numpy.array(r),16,0))))

2
আমি অন্য দিন আপনার অন্য উত্তরের একটিতে এটি মন্তব্য করতে যাচ্ছিলাম তবে range(3)এটি কখনই উপযুক্ত নয়।
Sp3000

1

সি #, 768 773 776 বাইট

namespace System.Drawing{class P{static void Main(string[]a){uint[]l={0xEBFBFFFC,0xB89B21B4,0xABFFF9FC,0xAA1269A4,0xFFF3F9FC};var w=a[0].Length*80+20;var b=new Bitmap(w,100);var g=Graphics.FromImage(b);g.FillRectangle(Brushes.Black,0,0,w,100);for(int i=0;i<a[0].Length;i++)for(int r=0;r<5;r++)for(int c=0;c<3;c++)if((l[r]&((uint)1<<(175-a[0][i]*3-c)))>0)g.FillRectangle(Brushes.White,20*(1+i*4+c),20*r,20,20);for(int x=1;x<w-1;x++)for(int y=1;y<99;y++)if(b.GetPixel(x,y).B+b.GetPixel(x+1,y).B+b.GetPixel(x,y+1).B+b.GetPixel(x,y-1).B+b.GetPixel(x+1,y-1).B+b.GetPixel(x+1,y+1).B+b.GetPixel(x-1,y+1).B+b.GetPixel(x-1,y-1).B==0)b.SetPixel(x,y,Color.Red);for(int x=1;x<w-1;x++)for(int y=1;y<99;y++)if(b.GetPixel(x,y).R>0)b.SetPixel(x,y,Color.White);b.Save(a[0]+".bmp");}}}

কমান্ড লাইন আর্গুমেন্ট হিসাবে নম্বর নেয়। নাম হিসাবে নম্বর সহ একটি দুর্দান্ত, পরিষ্কার, অ-অ্যালিজেড বিএমপি চিত্র আউটপুট দেয়।

গল্ফ করার আগে আসল:

namespace System.Drawing
{
    class P
    {
        static void Main(string[] args)
        {
            var numbers = args[0];
            uint[] lines = {
                0xEBFBFFFC, // 111 010 111 111 101 111 111 111 111 111 00
                0xB89B21B4, // 101 110 001 001 101 100 100 001 101 101 00
                0xABFFF9FC, // 101 010 111 111 111 111 111 001 111 111 00
                0xAA1269A4, // 101 010 100 001 001 001 101 001 101 001 00
                0xFFF3F9FC  // 111 111 111 111 001 111 111 001 111 111 00
            };
            var width = numbers.Length*4 + 1;
            var bmp = new Bitmap(width*20, 5*20);
            using (var gfx = Graphics.FromImage(bmp))
            {
                gfx.FillRectangle(Brushes.Black, 0, 0, width*20+2, 5*20+2);
                // Process all numbers
                for (int i = 0; i < numbers.Length; i++)
                {
                    var number = numbers[i]-'0';
                    for (int line = 0; line < 5; line++)
                    {
                        for (int col = 0; col < 3; col++)
                        {
                            if ((lines[line] & ((uint)1<<(31-number*3-col))) >0)
                                gfx.FillRectangle(Brushes.White, 20*(1 + i * 4 + col), 20*line, 20 , 20 );
                        }
                    }
                }
                // Edge detection
                for (int x = 1; x < width*20-1; x++)
                {
                    for (int y = 1; y < 5*20-1 ; y++)
                    {
                        if (bmp.GetPixel(x,y).B +
                            bmp.GetPixel(x + 1, y).B +
                                bmp.GetPixel(x, y + 1).B +
                                bmp.GetPixel(x, y - 1).B +
                                bmp.GetPixel(x + 1, y - 1).B +
                                bmp.GetPixel(x + 1, y + 1).B + 
                                bmp.GetPixel(x - 1, y + 1).B + 
                                bmp.GetPixel(x - 1, y - 1).B == 0)
                                bmp.SetPixel(x, y, Color.Red);
                    }
                }
                // Convert red to white
                for (int x = 1; x < width * 20 - 1; x++)
                {
                    for (int y = 1; y < 5 * 20 - 1; y++)
                    {
                        if (bmp.GetPixel(x, y).R>0)
                            bmp.SetPixel(x, y, Color.White);
                    }
                }
            }
            bmp.Save(@"c:\tmp\test.bmp");
        }
    }
}

1

গণিত 328 বাইট

j@d_:=Partition[IntegerDigits[FromDigits[d/.Thread[ToString/@Range[0,9]->StringPartition["75557262277174771717557117471774757711117575775717",5]],16],2, 20]/.{0->1,1->0},4];j@"*"=Array[{1}&,5];
w@s_:=  ColorNegate@EdgeDetect@Rasterize@ArrayPlot[Thread[Join@@Transpose/@j/@Characters@(s<>"*")],Frame->False,ImageSize->Large]

w["07299361548"]
w["19887620534"]

মাংসখণ্ডের


ব্যাখ্যা

চারটি বিট প্রতিটি ইনপুট ডিজিটের জন্য 5 লাইন কোষে প্রতিটি ব্যবহৃত হবে।

"75557262277174771717557117471774757711117575775717"বিটম্যাপ হিসাবে 0 থেকে 9 প্রতিনিধিত্ব করে।

উপরে বৃহত্তর পূর্ণসংখ্যার প্রথম 5 টি সংখ্যা, 75557শূন্যের জন্য প্রতিটি অ্যারে সারি কীভাবে প্রদর্শিত হবে তা নির্দেশ করে। 7উপস্থাপন করবে {0,1,1,1}, একটি সাদা কোষ, তার ডানদিকে, অনুসরণ করে 3 কালো কোষ; শীর্ষস্থানীয় 0প্রদর্শিত অঙ্ক পৃথক করতে একটি ফাঁকা জায়গা k 5এর সাথে মিল রয়েছে {0,1,0,1}, এটি সাদা, কালো, সাদা, কালো কোষ।

নিম্নলিখিত প্রতিস্থাপনের নিয়মের একটি তালিকা তৈরি করে:

Thread[ToString /@ Range[0, 9] -> StringPartition["75557262277174771717557117471774757711117575775717", 5]]

{"0" -> "75557", "1" -> "26227", "2" -> "71747", "3" -> "71717", "4" -> "55711", "5" - > "74717", "6" -> "74757", "7" -> "71111", "8" -> "75757", "9" -> "75717"}

নোট করুন যে যখন 3ইনপুট হয়, তখন এটি প্রতিস্থাপন করা হবে 71717 এই উপস্থাপনাটি বাইনারিতে প্রকাশ করা হয়:

p = Partition[IntegerDigits[FromDigits["3" /. {"3" -> "71717"}, 16], 2, 20], 4]

{{0, 1, 1, 1 1, {0, 0, 0, 1}, {0, 1, 1, 1}, {0, 0, 0, 1}, {0, 1, 1, 1} }

এর কালো-সাদা বিপরীতটি কেবল 1এস এবং 0এস এক্সচেঞ্জের মাধ্যমে পাওয়া যায় ।

q = p /. {0 -> 1, 1 -> 0}

{{1, 0, 0, 0}, {1, 1, 1, 0}, {1, 0, 0, 0}, {1, 1, 1, 0}, {1, 0, 0, 0} }


আসুন কি দেখতে pএবং qবর্ণন যখন দ্বারা প্রদর্শিত মত ArrayPlot:

ArrayPlot[#, Mesh -> True, ImageSize -> Small, PlotLegends -> Automatic] & /@ {p, q}

pis


এটি কেবল বড় অঙ্কের মাধ্যমে রেন্ডার করার আগে প্রতিটি অঙ্কের জন্য শূন্যের অ্যারেগুলিতে এবং কেবলমাত্র যোগ হয় ArrayPlot। শেষ অঙ্কের পরে চূড়ান্ত উল্লম্ব স্থান হিসাবে *সংজ্ঞায়িত করা হয় j

Thread[Join @@ Transpose /@ j /@ Characters@(s <> "*")]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.