নম্বরটি 7-সেগমেন্ট ডিসপ্লে প্যাটার্নে রূপান্তর করুন


28

দুটি স্বেচ্ছাচারিত সংখ্যা দেওয়া হয়েছে, খ। ডিজিটাল এলইডি প্যাটার্ন হিসাবে বি নম্বর মুদ্রণের যেখানে A হল স্কেল।

ইনপুট:

1 2320451640799518

ouput:

 _  _  _  _     _     _     _  _  _  _  _     _ 
 _| _| _|| ||_||_   ||_ |_|| |  ||_||_||_   ||_|
|_  _||_ |_|  | _|  ||_|  ||_|  |  |  | _|  ||_|

ইনপুট:

2 23

ouput:

 __  __
   |   | 
 __| __|
|      |
|__  __|

নিয়মাবলী:

  • ব্যবহারের stdin / stdout- এ জন্য ইনপুট / আউটপুট

  • বেশিরভাগ আপ-ভোটের কোড সহ কোড। টাই ক্ষেত্রে, সবচেয়ে সংক্ষিপ্ত কোড গ্রহণ করা হবে

  • সর্বাধিক আপ করা উত্তর 01/02/2014 এ গৃহীত হবে ( সর্বোচ্চ উত্তর 12 টি সহ এই উত্তরটি গৃহীত হয়েছে )


2
কোড চুরি / অনুপ্রেরণার জন্য কিছু সম্পর্কিত প্রশ্ন: " একটি 7-বিভাগের প্রদর্শন অনুকরণ করুন " এবং " এলইডি নম্বর এবং চিঠিগুলি "।
ড্যারেন স্টোন

@ ওয়াসি ধন্যবাদ আমি আপনার সম্পাদনাটি দেখেছি যা এটি আমার জন্য পরিষ্কার হয়েছে।
C0deH4cker

আপনার 9 এর শেষ লাইনে আন্ডারস্কোরটি হওয়া উচিত, বিপরীত 6 এর মতো হওয়া উচিত
টমাস

1
@ টমাস পরামর্শ দেওয়ার জন্য ধন্যবাদ। তবে, ইতিমধ্যে আমাদের কাছে 13 টি উত্তর রয়েছে সুতরাং এটি আরও পরিবর্তন করা অন্যায় হবে :-)
ওয়াসি

ঠিক আছে Wasi থেকে কিন্তু আমি আশা করি কিছু মনে না যে, আমি আমার prefered আকৃতি ব্যবহৃত 9মধ্যে আমার উত্তর , আমি মত এটি আরো :-)
টমাস

উত্তর:


20

কমোডোর 64 বেসিক

PETSCII শিল্প নিয়ম :)

তালিকা

আউটপুট:

চালান


3
4 সংখ্যার কি হয়েছিল? ও
টিমভি

এইভাবে আমি 4 নম্বর লিখি, তবে ঠিক আছে, আমি এটি ঠিক করেছি :)
ড্যাঙ্কো দুর্বিয়া

2
আকর্ষণীয় - আপনি কি হাত দিয়ে সেভাবে লেখেন? এটি কি সুইডেনে সাধারণ, বা আপনি যেখান থেকে আসেন সেখানে?
বুথবি

আমি পারলে +100 করতাম।
মাইকেল কোহল

12

পাইথন 3, 286 282 280

হ্যাঁ আমি এটিকে গল্ফ দিয়েছি। দুর্দান্ত চ্যালেঞ্জ!

n,x=input().split()
n=int(n)
l=lambda s:"".join(s)+"\n"
h=lambda s:s.replace(*"! ")*~-n+s.replace(*"!_")
print(l(" "+"_ "[c in"14"]*n+" "for c in x)+h(l("| "[c in"1237"]+n*"! "[c in"017"]+"| "[c in"56"]for c in x))+h(l(" |"[c in"0268"]+n*"! "[c in"1479"]+"| "[c=="2"]for c in x)))



এছাড়াও, এখানে পাইথন 2 সংস্করণটির ওজন কেবল 273 বাইটে হয়!

আরও গল্ফ করা আসল উত্সটি দিয়ে এটিকে আর আপডেট করবেন না। এটি তৈরি করা হয়েছিল যখন মূল উত্সটি 282 বাইট (পাইথন 3 সংস্করণ) ছিল।

exec'eJxdzE0OgjAQhuE9pxhn1VIlFhHUpCdRQlAx1NShAYwsOLzgD4irSd758tC8UWX6SDTZe824V1mju+uQ0lQz4o5RJr0dzylUO0TvWmhiFRd4IHTy8VV5ZWZNesqYizNA7jJaSC4mOUHu2LJjwTAEFJgA7k+gCWWAsUuii5eihD5Bw0XOul07bPxVhLGgl/9OS9mXcbIOMf4BPgK037kfbv4EGUTbgVAK/SnwBAs+TpU='.decode('base64').decode('zip')

এটি প্রতারণামূলক হতে পারে, তাই আমি এটি আলাদাভাবে যুক্ত করছি। এটি বৈধ হিসাবে বিবেচিত হয় কিনা তা আমাকে জানতে দিন Let


6

হাস্কেল (৩৮৯ টি চর)

সমাধানটিতে এই চিত্রটির নাম ব্যবহার করে অ্যারের প্রতিটি বিভাগের জন্য একটি করে 7 টি অ্যারে ব্যবহার করা হয়:

8 বিভাগের প্রদর্শন

। মানটি a !! 4এমন অক্ষর হবে যা সেই সংখ্যাটিতে 4 নম্বর হিসাবে প্রদর্শিত হবে।

মানগুলি উপযুক্ত যেখানে স্কেল দ্বারা গুণিত হয় (ব্যবহার rএবং rpপ্রতিলিপি জন্য), এবং শেষ পর্যন্ত মুদ্রিত।

কোড

a="_ __ _____"
b="|||||  |||"
c="|| |||||||"
d="_ __ __ _ "
e="| |   | | "
f="|   ||| ||"
g="  _____ __"
r=replicate
cm=concatMap
s=(' ':).(++" ")
dd w n=[[t n],rp$m f b n,[o g f b n],rp$m e c n,[o d e c n]] where
 rp=r$w-1
 t=cm(s.r w.(a!!))
 q f s x y=cm(\n->x!!n:r w(f s n)++[y!!n])
 o=q(!!) 
 m=q const ' '
go a=unlines$concat$dd(read$a!!0)$map(read.(:[]))$a!!1
main=interact$go.words

ব্যবহারের উদাহরণ

echo '1 2320451640799518' | runhaskell ./digit_led.hs
 _  _  _  _     _     _     _  _  _  _  _     _ 
 _| _| _|| ||_||_   ||_ |_|| |  ||_||_||_   ||_|
|_  _||_ |_|  | _|  ||_|  ||_|  |  |  | _|  ||_|

6

সি, 249 226 অক্ষর

সি মধ্যে গল্ফযুক্ত সমাধান:

int x,y,g,s,q;main(){char*c,i[99];for(scanf("%d %98s",&s,i);y<2*s+1;++y,puts(""))for(c=i;*c;++c)for(x=0;x<s+2;++x)q=(y+s-1)/s*3+(x+s-1)/s,g=(x%(s+1))*(y%s)?7:q<3?~q%2*7:q-2,putchar("_|_||_| "["zG<lMfvH~N"[*c-48]+1>>g&1?g:7]);}

যুক্ত হোয়াইটস্পেস সহ:

int x, y, g, s, q;

main() {
  char *c, i[99];
  for (scanf("%d %98s", &s, i); y < 2 * s + 1; ++y, puts(""))
    for (c = i; *c; ++c)
      for (x = 0; x < s + 2; ++x)
        q = (y + s - 1) / s * 3 + (x + s - 1) / s,
        g = (x % (s + 1)) * (y % s)
          ? 7
          : q < 3
            ? ~q % 2 * 7
            : q - 2,
        putchar("_|_||_| "["zG<lMfvH~N"[*c - 48] + 1 >> g & 1 ? g : 7]);
}

নোট:

  • সর্বাধিক 99 ডিজিট মুদ্রিত হয়
  • যদি ইনপুটটি ভালভাবে গঠন না করা হয় তবে আচরণটি অপরিজ্ঞাত হয় (উদাহরণস্বরূপ অ-অঙ্কগুলি থাকে, বা স্কেল <1)
  • আইনী সি 89 কোড হওয়া উচিত

কারও যত্ন নেওয়া উচিত, আমি এটি কীভাবে কাজ করে তার একটি ব্যাখ্যা সরবরাহ করব।


1
এই পৃষ্ঠার চারপাশে যা পড়েছি তা থেকে "সি ইন ওকে" কীভাবে আপনাকে অন্তর্ভুক্ত করতে হবে না #include <stdio.h>(এটি এটি ব্যতীত সংকলন করবে।) আপনি একটি ইনটও রাখতে পারেন main(), উদাহরণস্বরূপ main(x), 1 বাইট বন্ধ শেভ করে - যদিও এটি বৈধ নয় স্বাক্ষর, এবং scanfভিতরে রাখুন for: for(scanf("%d %98s", &s, &i); …)আরও একটি চাঁচা। - এখানে দেখুন ।
রানিয়াম

@ সুকিমিন্ডার এটি খুব সহায়ক ইঙ্গিত, ধন্যবাদ! আমি মুছে #includeসরানো scanfভিতরে for, অপ্রয়োজনীয় মুছে &মধ্যে &i, এবং করা intস্ট্যাটিক 0 আরম্ভের কাজে লাগান বিশ্বব্যাপী স্কোপ। কোডটি এখনও আইনী সি 98 হওয়া উচিত , তবে আমি ভাল করে পরীক্ষা করে দেখিনি। আমি বিশ্বাস করি এক নির্বাণ intমধ্যে main, আইনী নয় তাই আমি যে ত্যাগ করেন।
রিমা

স্ট্যান্ডার্ড কমপ্লায়েন্স ছেড়ে দেওয়া অনেক সাহায্য করতে পারে। উদাহরণস্বরূপ, আপনি intগ্লোবাল ভেরিয়েবলের জন্য বাদ দিতে পারেন । এছাড়াও %98sহতে পারে %s(দীর্ঘতর স্ট্রিংগুলির জন্য আপনি যেভাবেই ব্যর্থ হন, কোনও উপায়ে কী তা
বোঝায়

ভাল! আমি "ধরণের" অনুরূপ দর্শন ব্যবহার করেছি, তবে সহজ -
টমাস

5

রুবি ২.০

দ্রুত এবং (তাই নয়) নিখুঁত রুবি বাস্তবায়ন।

V,H = ' |',' _'
l = gets.split
s = l[0].to_i
o = Array.new 1+s*2, ''
l[1].each_char {|c|
  m = "{H=mNgwI\x7FO"[c.to_i].ord
  o[0] += " #{H[m[0]]*s} "
  o[s] += "#{V[m[1]]}#{H[m[2]]*s}#{V[m[3]]}"
  o[s*2] += "#{V[m[4]]}#{H[m[5]]*s}#{V[m[6]]}"
}
(s-1).times { |i|
  o[i+1] = o[s].gsub '_', ' '
  o[s+i+1] = o[s*2].gsub '_', ' '
}
o.each {|r| puts r}

দ্রুত ব্যাখ্যা:

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


এখানে কী চলছে তা আপনি ব্যাখ্যা করতে পারেন?
মাইকেল স্টারন

5

পাইথন 2.6 কোনও আমদানি ছাড়াই। আমি বলব যে এই সমাধানটির আকর্ষণটি টেমপ্লেটগুলির ব্যবহার। দুর্ভাগ্যজনকভাবে আমি মনে করি যে এটি কেন কমপ্যাক্ট করার জন্য আমার এত কঠিন সময় ছিল।

def numbers(scale, number):

    def single(yay, wall, digit):
        walls = ('1110111', '0010010', '1011101', '1011011',
                 '0111010', '1101011', '1101111',
                 '1010010', '1111111',
                 '1111010')
        return yay if int(walls[digit][wall]) else ' '

    def expand_one(char, digit):
        characters = '_||_||_'
        translated = single(characters[char], char, digit)
        if char % 3:
            return translated
        return translated * scale

    def expand_template(template, digit):
        out = ''
        for c in template:
            if c == '.':
                out += ' ' * scale
            elif c == ' ':
                out += c
            else:
                out += expand_one(int(c), digit)
        return out

    def repeated_expand_template(template, n):
        print ''.join(expand_template(template, int(d)) for d in n)

    repeated_expand_template(' 0 ', number)
    for _ in range(scale - 1):
        repeated_expand_template('1.2', number)
    repeated_expand_template('132', number)
    for _ in range(scale - 1):
        repeated_expand_template('4.5', number)
    repeated_expand_template('465', number)


scale, number = raw_input().split()
numbers(int(scale), number)

এবং কিছুটা ছোট (308 টি অক্ষর):

s,n=raw_input().split();s=int(s)
for e in('0 0 ','11.2','0132','14.5','0465'):print '\n'.join(''.join(''.join(([' ','_||_||_'[int(c)]][int(bin(1098931065668123279354)[7*int(d)+int(c)+2])]*(s,1,1)[int(c)%3])if ord(c)>46 else c for c in e[1:].replace('.',' '*s))for d in n) for _ in range((1,s-1)[int(e[0])]))

Fyi, অঙ্কগুলির শীর্ষটি '_' (আন্ডারস্কোর) বলে মনে হয়, এবং অঙ্কগুলির মধ্যে কোনও ফাঁক থাকে না। আমি প্রথম
হাহাতে

5

(সম্পাদনা করুন: এই সমাধানটি এখন অবৈধ কারণ নির্দেশের শব্দার্থবিজ্ঞানের পরিবর্তন হয়েছে I আমি বুঝতে পারি নি যে আমি যখনই এটি পরিবর্তন করেছি তখন আমি ইতিমধ্যে নির্দেশটি ব্যবহার করেছি You তবে আপনি কেবলমাত্র এতে পরিবর্তন করে থের প্রোগ্রামটি ঠিক করতে পারবেন) নতুন নির্দেশ ।)

স্ক্রিপ্টিং - 85 টি অক্ষর

겠合글坼銻標⓷가殲갰復묽땸민뫝뜵깉걈밂⓶各가⓵겐上⓷감嚙긇밌⓶掘⓶감嚙눖밂⓶掘⓷合⓶감嚙긇밌⓶掘⓷合⓸⓸替❶終⓶丟終❶눠替눐終①貶復⓶⓷終丟併눐替글①復終눠替뇰①復終⓶丟

ইনপুট:

1 1024856359701

আউটপুট:

    _  _     _  _  _  _  _  _  _  _    
  || | _||_||_||_ |_  _||_ |_|  || |  |
  ||_||_   ||_| _||_| _| _|  |  ||_|  |

ইনপুট:

2 47474747

আউটপুট:

     __      __      __      __ 
|  |   ||  |   ||  |   ||  |   |
|__|   ||__|   ||__|   ||__|   |
   |   |   |   |   |   |   |   |
   |   |   |   |   |   |   |   |


আপনি প্রোগ্রাম ঠিক করতে পারেন? পুরো পোস্ট স্ট্রোক ছেড়ে বেশ কুরুচিপূর্ণ।
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

আমি অবশ্যই এতে পরিবর্তন করতে পারি , তবে এটি এই প্রবেশকে প্রতারণামূলক করে তুলবে কারণ এই চ্যালেঞ্জ পোস্ট হওয়ার পরে এটি আবিষ্কার হয়েছিল।
টিমউই

আমি মনে করি না যে এটি এতটা সমস্যা। আমি যাইহোক আপনার প্রোগ্রামকে আরও খাটো করে তুলব না।
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

1
না, তবে এটি এই সম্প্রদায়ের একটি গুরুত্বপূর্ণ নিয়ম লঙ্ঘন করবে।
টিমউই

আর কোনও বিধি লঙ্ঘন করে না: পি
ASCII-

4

সি # ( 480 443 অক্ষর)

namespace System{using z=String;using w=Console;class P{static void Main(){var t=w.ReadLine().Split(' ');var s=int.Parse(t[0]);z b="17",d=b+23,e=b+3459,f="56",g=e+2680;Action<z,z,z,int>q=(l,m,r,n)=>{for(int i=1;i<n;i++){foreach(var c in t[1]){h(c,l);for(int j=0;j<s;j++)h(c,m,"_");h(c,r);}w.Write("\n");}};q(g,"14",g,2);q(d,g,f,s);q(d,b+0,f,2);q(e,g,"2",s);q(e,b+49,"2",2);}static void h(char x,z m,z y="|"){w.Write(m.Contains(""+x)?" ":y);}}}

বর্ধিত সংস্করণ:

using System;
using System.Linq;

namespace Segments
{
    internal class Program
    {
        static void Main()
        {
            var scale = int.Parse(Console.ReadLine());
            var input = Console.ReadLine();

            PrintLine(input, "", "14", "", 2);
            PrintLine(input,"1237", "", "56", scale);
            PrintLine(input,"1237", "170", "56", 2);
            PrintLine(input,"134579", "", "2", scale);
            PrintLine(input,"134579", "147", "2", 2);
        }

        static void PrintLine(string input, string leftMatch, string middleMatch, string rightMatch, int scale)
        {
            for (int i = 1; i < scale; i++)
            {
                foreach (var c in input)
                {
                    PrintDigitLine(c, leftMatch, '|', 1);
                    PrintDigitLine(c, middleMatch, "_", scale);
                    PrintDigitLine(c, rightMatch, '|', 1);
                }
                Console.Write("\n");
            }
        }

        private static void PrintDigitLine(char digit, string match, char charToPrint, int)
        {
            for (int i = 0; i < n; i++) Console.Write(match.Contains(digit) || match == "" ? ' ' : charToPrint);
        }
    }
}

আমার ধারণাটি ছিল কাজটিকে 5 টি অনুভূমিক রেখায় বিভক্ত করা, যা প্রতিটি চরিত্রের জন্য বাম, ডান এবং মাঝের অংশে বিভক্ত হয়।


হতে পারে আমি এটি ভুল অনুলিপি করেছি, তবে আমি এটি আদর্শের উপর চালানোর চেষ্টা করেছি এবং এটি একটি ত্রুটি দিয়েছে। ideone.com/gQ6LH7
C0deH4cker

সম্ভবত আমার দোষ, আমাকে দেখতে দিন
রিক

1
@ C0deH4cker আমি পৃথক দুটি রিডলাইন ইনপুট নিয়েছি। এটির একটিটি
রিক

1
@ C0deH4cker আমি একটি সংস্করণ তৈরি করেছি যা উল্লিখিত হিসাবে ইনপুটটি নিয়ে যায় এবং 9. এর নীচের অংশটি ফেলে দেয় ইনপুটটি অনেক অক্ষর নেয়, 9 টির জন্য অতিরিক্ত 1 অতিরিক্ত খরচ হয়।
রিক

1
আপনার ;সেখানে অনর্থক রয়েছে (480); আপনি লিখতে পারেন Action<z,z,z,int>q=(l,m,r,n)=>{...};(470); তোমাদের মধ্যে প্রথম প্যারামিটার করতে পারেন hএকটি charকি ""+ভিতরে h(467); এবং অবশেষে, আপনি ঘোষণা করতে পারেন এবং পুনরায় ব্যবহার করতে পারেন z d="134579",b="1237"(465)। এটি এখন পর্যন্ত আমি এটি তৈরি করতে সবচেয়ে ছোট
টিমভি

3

আমি অনুমান করি খুব সংক্ষিপ্ত সমাধান আছে, তবে এটি কোড-গল্ফ না হওয়ায় আমি বেশ সন্তুষ্ট!

এই পিএইচপি স্ক্রিপ্ট দুটি সংখ্যার নিতে হবে a, bstdin থেকে এবং echo bনেতৃত্বাধীন বিন্যাসে এ aআকার।

fscanf(STDIN, "%d %d", $a, $b); //Didn't test this line, but it should be ok.
$space=str_repeat("&nbsp;", $a);

$top = $topLeft = $topRight = $mid = $botLeft = $botRight = $bot = array();
for ($i=0; $i<count($b); $i++) {
    $top[$i] = $topLeft[$i] = $topRight[$i] = $mid[$i] = $botLeft[$i] = $botRight[$i] = $bot[$i] = true;
switch ($b[$i]) {
    case 0:
        $mid[$i] = false;
    break;
    case 1:
        $top[$i] = $topLeft[$i] = $mid[$i] = $botLeft[$i] = $bot[$i] = false;
        break;
    case 2:
        $topLeft[$i] = $botRight[$i] = false;
        break;
    case 3:
        $topLeft[$i] = $botLeft[$i] = false;
        break;
    case 4:
        $top[$i] = $botLeft[$i] = $bot[$i] = false;
        break;
    case 5:
        $topRight[$i] = $botLeft[$i] = false;
        break;
    case 6:
        $topRight[$i] = false;
        break;
    case 7:
        $topLeft[$i] = $mid[$i] = $botLeft[$i] = $bot[$i] = false;
        break;
    case 9:
        $botLeft[$i] = false;
        break;
    }
}

horizontal($top);
vertical($topLeft, $topRight);
horizontal($mid);
vertical($botLeft, $botRight);
horizontal($bot);

function horizontal($position) {
    global $a, $b, $space;
    for ($i=0;$i<count($b);$i++) {
        if ($position[$i])
            echo "&nbsp;".str_repeat("-", $a)."&nbsp;";
        else
            echo "&nbsp;".$space."&nbsp;";
    }
    echo "<br />";
}

function vertical($positionLeft, $positionRight) {
    global $a, $b, $space;
    for ($j=0;$j<$a;$j++) {
        for ($i=0;$i<count($b);$i++) {
            if ($positionLeft[$i]) {
                echo "|".$space;
                if ($positionRight[$i])
                    echo "|;";
                else
                    echo "&nbsp;";
            }
            else {
                echo "&nbsp;".$space;
                if ($positionRight[$i])
                    echo "|";
                else
                    echo "&nbsp;";
            }
        }
        echo "<br />";
    }
}

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


আসলে, অঙ্কগুলির মধ্যে কোনও ফাঁকা স্থান থাকা উচিত নয়। নমুনার জন্য এটি দেখতে কেবল একমাত্র কারণ হ'ল জায়গাগুলি যেখানে '|' উদাহরণস্বরূপ একটি 8 এ হবে। আমাকে বের করার জন্য কিছুক্ষণ সময়
নিলো

ওহ, আপনি ঠিক বলেছেন! আপনাকে ধন্যবাদ :)
Vereos

2

সি #, 435 359 473 বাইট

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

  • অপ্রয়োজনীয় কোড সরানো হয়েছে। তুলনাগুলির বাইট আকার হ্রাস।
  • ইনপুট জন্য স্ট্যান্ডার্ড ব্যবহার করে একক একা অ্যাপ্লিকেশন রূপান্তরিত।

এখানে গল্ফ কোড (যুক্ত লাইন বিরতি এবং সাদা স্থান সহ) রয়েছে:

using C=System.Console;
class P{
    static void Main(){
        var a=C.ReadLine().Split(' ');
        D(int.Parse(a[0]),a[1]);
    }
    static void D(int r,string n){
        int i,j;
        string s="",v="|",w=" ",x=new string('_',r),y=new string(' ',r),z="\n";
        foreach(var c in n)s+=w+(F(0,c)?x:y)+w+w;
        for(j=1;j<6;j+=3)
            for(i=r;i-->0;){
                s+=z;
                foreach(var c in n)s+=(F(j,c)?v:w)+(i<1&&F(j+1,c)?x:y)+(F(j+2,c)?v:w)+w;
            }
        C.Write(s+z);
    }
    static bool F(int i,char c){
        return(new[]{1005,881,892,927,325,365,1019}[i]&1<<(int)c-48)>0;
    }
}

এগুলি বৈধ সি # ফাংশন। এটি কোনও একক কর্মসূচি হওয়া উচিত তা কখনও বলা হয়নি। যাইহোক, এটা মান মধ্যে ব্যবহার করে না।
হাত-ই-খাদ্য

@ টিমউই, অনুসারে সম্পাদিত ...
হ্যান্ড-ই-ফুড

1
সাবাশ!! আমি এটা আরো কিছু golfed করেছি এবং আমি এটা নিচে 425 (অক্ষর; হল UTF-8 432 বাইট), এটি অন্যান্য C # এর উত্তর চেয়ে খাটো করে। using System;using S=System.String;class P{static void Main(){Action<S[]>D=n=>{var r=int.Parse(n[0]);Func<int,int,bool>F=(i,c)=>("ϭͱͼΟŅŭϻ"[i]&1<<c-48)>0;S s="",v="|",w=" ",x=new S('_',r),y=new S(' ',r);foreach(var c in n[1])s+=w+(F(0,c)?x:y)+w+w;for(int j=1;j<6;j+=3)for(int i=r;i-->0;){s+="\n";foreach(var c in n[1])s+=(F(j,c)?v:w)+(i<1&&F(j+1,c)?x:y)+(F(j+2,c)?v:w)+w;}Console.Write(s);};D(Console.ReadLine().Split(' '));}}
টিমউই

1
Systemনামের
জায়গাতে

2

সি ( 561 492 বাইট)

লেখক ফ্রিমার। গত সপ্তাহে তিনি আমাকে তার উত্তর পাঠিয়েছিলেন (তিনি এখনও তার অ্যাকাউন্ট তৈরি করেননি)।

492 বাইট তবে আরও কিছুটা অবরুদ্ধ:

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#define C(x) ((_[*n-'0'])>>s)&m&x
#define P putchar
unsigned _[]={476,144,372,436,184,428,492,148,508,188};
void p(int a,char*n,unsigned m,int s)
{for(;isdigit(*n);++n){P(C(1)?'|':' ');
for(int i=0;i<a;++i)P(C(4)?'_':' ');
P(C(2)?'|':' ');}
P('\n');}
void l(int a,char*b){p(a,b,7,0);int i=1;
for(;i<a;++i)p(a,b,3,3);p(a,b,7,3);i=1;
for(;i<a;++i)p(a,b,3,6);p(a,b,7,6);}
int main(int c,char**v){l(c>1?atoi(v[1]):1,c>2?v[2]:"0123456789");}

পূর্ববর্তী সংস্করণ 561 বাইট ব্যবহার করে:

#include<stdio.h>
#include<ctype.h>
#define C(x) ((((*n-'0')[_])>>s)&m&x)
const unsigned _[]={476,144,372,436,184,428,492,148,508,188};
void p(int a,const char*n,unsigned m,int s)
{
 for(;isdigit(*n);++n) {
  putchar(C(1)?'|':' ');
  const char c=C(4)?'_':' ';
  for(int i=0;i<a;++i) putchar(c);
  putchar(C(2)?'|':' ');
 }
 putchar('\n');
}
void l(int a,const char*b)
{
 p(a,b,7,0);
 for(int i=1;i<a;++i)p(a,b,3,3);p(a,b,7,3);
 for(int i=1;i<a;++i)p(a,b,3,6);p(a,b,7,6);
}
#include<stdlib.h>
int main(int c,char**v){l(c>1?atoi(v[1]):1,c>2?v[2]:"0123456789");}

ফ্রিমার আসল সংস্করণ (623 বাইট):

#include<stdio.h>
#include<ctype.h>
const unsigned int _[]={476,144,372,436,184,428,492,148,508,188};
void p(int a,const char*n,unsigned int m,int s)
{
  for(;isdigit(*n);++n) {
#define C(x) ((((*n-'0')[_])>>s)&m&x)
    putchar(C(1)?'|':' ');
    const char c=C(4)?'_':' ';
    for(int i=0;i<a;++i) putchar(c);
    putchar(C(2)?'|':' ');
  }
  putchar('\n');
}
void print_as_led(int a,const char*b)
{
  p(a,b,7,0);
  for(int i=1;i<a;++i)p(a,b,3,3);p(a,b,7,3);
  for(int i=1;i<a;++i)p(a,b,3,6);p(a,b,7,6);
}
#include<stdlib.h>
int main(int argc,char**argv){print_as_led(argc>1?atoi(argv[1]):1,argc>2?argv[2]:"0123456789");}

সংকলন:

$ gcc -std=c99 -Wall print_as_led.c

ডিফল্ট 0123456789নম্বর তবে বিভিন্ন মাপ ব্যবহার করে উদাহরণ :

$ ./a.out
 _     _  _     _  _  _  _  _
| |  | _| _||_||_ |_   ||_||_|
|_|  ||_  _|  | _||_|  ||_|  |

$ ./a.out 2
 __      __  __      __  __  __  __  __
|  |   |   |   ||  ||   |      ||  ||  |
|  |   | __| __||__||__ |__    ||__||__|
|  |   ||      |   |   ||  |   ||  |   |
|__|   ||__  __|   | __||__|   ||__|   |

$ ./a.out 3
 ___       ___  ___       ___  ___  ___  ___  ___
|   |    |    |    ||   ||    |        ||   ||   |
|   |    |    |    ||   ||    |        ||   ||   |
|   |    | ___| ___||___||___ |___     ||___||___|
|   |    ||        |    |    ||   |    ||   |    |
|   |    ||        |    |    ||   |    ||   |    |
|___|    ||___  ___|    | ___||___|    ||___|    |

অন্যান্য উদাহরণ:

$ ./a.out 1 42
    _
|_| _|
  ||_

$ ./a.out 2 42
     __
|  |   |
|__| __|
   ||
   ||__

$ ./a.out 3 42
      ___
|   |    |
|   |    |
|___| ___|
    ||
    ||
    ||___

বড় আকার:

$ ./a.out 4 42
       ____
|    |     |
|    |     |
|    |     |
|____| ____|
     ||
     ||
     ||
     ||____
$ ./a.out 5 42
        _____
|     |      |
|     |      |
|     |      |
|     |      |
|_____| _____|
      ||
      ||
      ||
      ||
      ||_____

1

পার্ল + ফিগলেট + বিআরএ * : 54 টি অক্ষর

while(<>){($n,$x)=split;print(`figlet -f 7seg$n $x`);}

আমি অনুভব করেছি যে এটি ফিগলেটের সাথে করা বেশ সহজ হবে , তবে এই উদ্দেশ্যে কোনও উপযুক্ত ফন্ট নেই বলে মনে হয়। তাই আমি কিছু তৈরি করেছি :-)

এটি টার্মিনালে কেমন দেখাচ্ছে:

$ perl ./led.pl
1 234
 _  _    
 _| _||_|
|_  _|  |
2 345
 __      __ 
   ||  ||   
 __||__||__ 
   |   |   |
 __|   | __|
3 456
      ___  ___ 
|   ||    |    
|   ||    |    
|___||___ |___ 
    |    ||   |
    |    ||   |
    | ___||___|

* বিআরএ: নিন্দা বিধানের অপব্যবহার


কেন এটির জন্য একটি ডাউনভোট রয়েছে তা পাবেন না। ফন্ট সহ দুর্দান্ত কৌশল!
ভিজিওন

আমি downvoting ছিল না, কিন্তু আমি বুঝতে পারছি যে ব্যবহার একটি প্রোগ্রাম পরিবর্তে আসলে উপার্জন প্রোগ্রাম প্রতারনা করা হয়।
টমাস

1

পার্ল,   261 244 187   166 অক্ষর

কিছুটা বিটওয়াস এনকোডিং দর্শনের নিয়ম :-)

($n,$a)=split/ /;sub c{$_=$a;y/0-9/Gl+%<UWm7=/;s/./(substr"   _ _|_| |_  |",2*ord($&)>>$_[0]&$_[1],3)=~s|.\K.|$&x$n|er/ge;print y/_/ /r x($n-1).$_}c 0,2;c 4,14;c 1,14

হোয়াইটস্পেস সহ কোড যুক্ত করা হয়েছে:

($n,$a)=split/ /;

sub c{
$_=$a;
y/0-9/Gl+%<UWm7=/;
s/./(substr"   _ _|_| |_  |",2*ord($&)>>$_[0]&$_[1],3)=~s|.\K.|$&x$n|er/ge;
print y/_/ /r x($n-1).$_
}

c 0,2;
c 4,14;
c 1,14

পার্লকে সাথে আমন্ত্রণ জানাতে হবে -n:

$ perl -n digitize.zoom.pl
1 12304597
     _   _   _       _   _   _
  |  _|  _| | | |_| |_  |_|   |
  | |_   _| |_|   |  _|   |   |
2 0784
 __   __   __
|  |    | |  | |  |
|  |    | |__| |__|
|  |    | |  |    |
|__|    | |__|    |
3 789
 ___   ___   ___
    | |   | |   |
    | |   | |   |
    | |___| |___|
    | |   |     |
    | |   |     |
    | |___|     |

নোট:

  • কীভাবে অঙ্কগুলি প্রদর্শিত হয় সে সম্পর্কে সমস্ত কিছুই স্ট্রিংটিতে এনকোড করা হয় Gl+%<UWm7=:-) একটি অক্ষর একটি অঙ্কের সাথে মিলে যায়, এনকোডযুক্ত " _ _|_| |_ |"স্ট্রিংয়ের মধ্যে পরপর 3 টি অক্ষরের 3 পজিশন থাকে ।
  • সংখ্যাগুলি 3 লাইনে নির্মিত হয়, প্রতিটি লাইনে লাইন থাকে। 3 টি লাইনের প্রতিটি উপ-রুটিনের সাথে একটি কলের সাথে মিলে যায় c, যা দ্বিতীয় এবং তৃতীয় লাইনের জন্য উল্লম্ব জুমিংও সম্পাদন করে।
  • অনুভূমিক জুমিং উপ-রুটিনের শেষে করা হয় c

আমার sedপ্রোগ্রামটি জুম করতে পারে না তবে এটি দেখতে অনেক সুন্দর লাগে, তাই না? :-)

s/./\0 /g
h
s/[14]/   /g
s/[2305-9]/ _ /g
p
g
s/[17]/  |/g
s/[23]/ _|/g
s/[489]/|_|/g
s/[56]/|_ /g
s/0/| |/g
p
g
s/[147]/  |/g
s/2/|_ /g
s/[359]/ _|/g
s/[680]/|_|/g

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


আমি ভাবছিলাম যে আপনি কীভাবে স্কেলিংটি কাজ করে তা ব্যাখ্যা করতে পারলে আমি পার্লের নিজস্ব সংস্করণটি প্রয়োগ করার চেষ্টা করছি। তবে উল্লম্ব এবং অনুভূমিক স্কেলিংটি সঠিকভাবে পাওয়া যাচ্ছে না।
হান্টার ম্যাকমিলেন

0

সি #, 386 382 364 চর / 374 বাইট (ইউটিএফ -8) এবং (প্রচুর?) উন্নতির জন্য রুম ...

using System.Linq;using C=System.Console;class P{static void Main(string[] args){var s=C.ReadLine();for(int l=0;l<5;l++){for(int j=0;j<s.Length;j++)C.Write(string.Join("",Enumerable.Range(0,3).Select(i=>{var x=l*3+i;return((x&1)>0?((((System.Text.Encoding.Unicode.GetBytes("⑷浝欮╻潿")[(byte)s[j]-48]>>x/2)&1)==1)?(x-1%3>0?"|":"-"):" "):" ");}))+" ");C.WriteLine();}}}

সম্পাদনা ক্র্যাপ ... আমি "স্কেল" অংশটি মিস করেছিবিষ্ঠা

আমি যদি এটির কাছাকাছি যাই তবে এটি অন্য শট দেব ..


হ্যাঁ, স্কেল অংশ এটিকে ভয়ঙ্কর করে তোলে।
সিজেফুরে

0

জে - 147 95 টি অক্ষর

প্রয়োজনীয় স্কেলিং যুক্ত করা হয়েছে:

1!:2&2,./(([1 s 0 s=:1 :(':';'y#"(2-m)~(m{$y)$1,x'))"2(3 :'(y{(5 3$&,0&,.)"1@#:l)}d')@"."0@":)/".]1!:1]1[l=:>:a.i.'v#\Z9jnQ~z'[d=:' ',:5 3$' - | |'

টীকাগুলি সংস্করণ:

NB. Digit array (2 x 5 x 3) first is blank, second is filled.
d=:' ',:5 3$' - | |'
NB. Bits to selector (taking into account that all "usefull" bits are separated with 0 bits, looking at the 5 x 3 grid)
bts =: 5 3 $&, (0&,.)
NB. list of character bits.
l=: 119 36 93 91 58 107 111 82 127 123
NB. golfing using ascii range
l=: >:a.i.'v#\Z9jnQ~z'

NB. scaling function
NB. scaling in 1 direction involves inserting copies of the middle segments:
NB. from y, copy the middle segments, 1 x 1 x 1 for rank 2 and 1 x 1 for rank 1
NB. Usage: scale (rank s) segment
s=: 1 : (':';'y#"(2-m)~(m{$y)$1,x')
NB. scale first along columns, then along rows, apply only to rank 2 (planes)
b=:([1 s 0 s)"2

NB. Get one number by using amend with a selection array (0 is blank, 1 is filled)
NB. get the y'th plane from the array of 10 x 5 x 3 selector bits, use those to index d with.
g=: 3 : '(y { (bts"1 #: l)) } d'
NB. from right to left: read stdin, convert number string to numbers,
NB. use the left for scaling, and split the right in digits,then apply g,
NB. then paste them together so the numbers appear next to each other.
NB. Put this result on stdout
1!:2&2,./(b g@"."0@":)/".]1!:1]

উদাহরণ:

1 0123456789
 -     -  -     -  -  -  -  - 
| ||    |  || ||  |    || || |
       -  -  -  -  -     -  - 
| ||  |    |  |  || |  || |  |
 -     -  -     -  -     -  - 

2 123
     --  -- 
|      |   |
|      |   |
     --  -- 
|   |      |
|   |      |
     --  -- 

কিভাবে এই প্রশ্নের উত্তর দেয়?
ওয়াসি

আপনি একেবারে ঠিক বলেছেন ... আমি এটি ঠিক করব
jpjacobs

আপনার উদাহরণটি ভুল। প্রশ্ন দেখুন।
টমাস

0

রুবি, 126 এএসসিআইআই অক্ষর

->n,x{(n*2).downto(0){|i|x.bytes{|c|z='u"ik:[]b}{'[c-48].ord+2>>i/n*3&7
print' |'[z/2%2],(z%2>i%n ??_:' ')*n,' |'[z/4]}
puts}}

প্রতিটি ডিজিটকে তৃতীয়াংশে বিটম্যাপ হিসাবে এনকোড করা হয়, প্রতিটি তৃতীয়টি অক্টাল অঙ্ক দ্বারা উপস্থাপিত হয়।

|_| 8^2 (left and right never used! only the 1's bit used!)  
|_| 8^1 (4*right+2*left+1*bottom)
|_| 8^0 (4*right+2*left+1*bottom)

যেহেতু সমস্ত সংখ্যার হয় হয় 64 এর বিট বা 32 এর বিট সেট রয়েছে, পরিসীমাটি 044 অক্টাল থেকে 177 অক্টাল। দুর্ভাগ্যক্রমে 177 অ-প্রিন্টেবল ডেল অক্ষর, সুতরাং যাদুটির স্ট্রিংয়ে প্রয়োজনীয় বিটম্যাপ কোডের নীচে 2 নম্বর রয়েছে এবং আমাদের ফাংশনে 2 টি যোগ করতে হবে।

পরীক্ষা প্রোগ্রামে অসম্পূর্ণ

f=->n,x{
  (n*2).downto(0){|i|                               #1 top line, n middle lines, n bottom lines
    x.bytes{|c|                                     #iterate through bytes
      z='u"ik:[]b}{'[c-48].ord+2>>i/n*3&7           #find octal code for current 1/3 digit
      print' |'[z/2%2],(z%2>i%n ??_:' ')*n,' |'[z/4]#print left,right and bottom
    }                                               #z%2>i%n only true on bottom row of 3rd where i%n=0 (print _'s) and octal code has 1's bit set
    puts                                            #print a newline to finish line 
  }
}

n=gets.to_i  #size
x=gets.chop  #number taken in string form
f[n,x]

আউটপুট

C:\Users\steve>ruby 7seg.txt
4
0123456789
 ____        ____  ____        ____  ____  ____  ____  ____
|    |     |     |     ||    ||     |          ||    ||    |
|    |     |     |     ||    ||     |          ||    ||    |
|    |     |     |     ||    ||     |          ||    ||    |
|    |     | ____| ____||____||____ |____      ||____||____|
|    |     ||          |     |     ||    |     ||    |     |
|    |     ||          |     |     ||    |     ||    |     |
|    |     ||          |     |     ||    |     ||    |     |
|____|     ||____  ____|     | ____||____|     ||____| ____|

0

পার্ল 6, 284 241 237

my (\a,\n)=split " ",slurp.trim;my @p=n.comb;sub g(\b,\c){for @p {my $h=:36(b);$h+>=3*$_;for ^3 {my \e=$_==1;print " |_".substr($h%2&&(c+!e)&&1+e,1)x a**e;$h+>=1}};say ""};for <52N98I 0 HMTVAD 1 AZRXEV 1> ->\s,\q{g(s,0)for 2..a*q;g(s,1)}

পূর্ববর্তী সমাধান:

my (\a,\n)=slurp.trim.split: " ";my @p=n.comb;sub g(\b,\c){for @p {my $h=b;$h+>=3*$_;for ^3 {my \e=$_==1;print " |_".substr($h%2&&(c+!e)&&1+e,1)x a**e;$h+>=1}};say ""};for 306775170,0,1066270117,1,664751335,1 ->\s,\q{g(s,0)for 2..a*q;g(s,1)}
my (\a,\n)=slurp.trim.split: " ";my @p=n.comb;my &f={print $^b.substr(3*$_,1)~($^c??$b.substr(3*$_+1,1)!!" ")x a~$b.substr(3*$_+2,1)for @p;say ""};for (" _     _  _    "~" _ "x 5,0,"| |  | _| _||_||_ |_   ||_||_|",1,"|_|  ||_  _|  | _||_|  ||_|  |",1) ->\s,\q{f(s,0)for 2..a*q;f(s,1)}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.