اعداد OCR

اعداد OCR

متوسط

مقدمه

بهترین دوستتان Marta به‌تازگی شغل رؤیایی‌اش را به دست آورده است: کار با مجموعه‌های یک موزه‌ی تاریخ محلی. او از علاقه‌ی شما به برنامه‌نویسی باخبر است و درباره‌ی مشکلی در محل کارش برای نمایشگاهی پیش‌رو در موضوع تاریخ رایانه با شما درد دل می‌کند. دانشکده‌ی ریاضی یکی از دانشگاه‌های محلی چند جعبه خروجی چاپی تاریخی اهدا کرده بود، اما با توجه به وضعیت نامناسب این اسناد، تصمیم گرفته شده است که متن آن‌ها دیجیتالی شود. با این حال، چاپگر قدیمی دانشگاه در نحوه‌ی نمایش متن رفتارهای عجیبی داشت و دوستتان می‌تواند از کمک شما برای استخراج موفقیت‌آمیز داده‌ها بهره ببرد.

دستورالعمل‌ها

تشخیص نویسه نوری یا OCR نرم‌افزاری است که تصاویر متن را به متنی قابل خواندن برای ماشین تبدیل می‌کند. با توجه به شبکه‌ای از نویسه‌ها که چند رقم را نمایش می‌دهد، آن شبکه را به رشته‌ای از ارقام تبدیل کنید. اگر شبکه چند سطر سلول داشته باشد، سطرها باید در خروجی با "," از هم جدا شوند.

  • شبکه از یک یا چند خط سلول تشکیل شده است.
  • هر خط از شبکه از یک یا چند سلول تشکیل شده است.
  • هر سلول سه ستون عرض و چهار سطر ارتفاع دارد (۳×۴) و یک رقم را نمایش می‌دهد.
  • ارقام با خط عمودی ("|")، زیرخط ("_") و فاصله (" ") رسم می‌شوند.

حالت‌های خاص

  • اگر اندازه‌ی ورودی معتبر نباشد، برنامه‌تان باید نشان دهد که خطایی رخ داده است.
  • اگر اندازه‌ی ورودی درست باشد اما سلولی قابل تشخیص نباشد، برنامه‌تان باید برای آن نویسه "?" را خروجی بدهد.

مثال‌ها

ورودی زیر (بدون توضیحات) به "1234567890" تبدیل می‌شود.

      _  _     _  _  _  _  _  _  #
    | _| _||_||_ |_   ||_||_|| | # Decimal numbers.
    ||_  _|  | _||_|  ||_| _||_| #
                                 # The fourth line is always blank,

ورودی زیر به "123,456,789" تبدیل می‌شود.

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

قالب شبکه

شبکه به شکل رشته‌ای نمایش داده می‌شود که با نویسه‌ی پوچ پایان می‌یابد و در انتهای هر سطر یک نویسه‌ی خط جدید دارد.

ثبات‌ها

ثبات کاربرد نوع توضیح
$a0 ورودی آدرس رشته‌ی ورودی پایان‌یافته با نویسه‌ی پوچ
$a1 ورودی/خروجی آدرس رشته‌ی نتیجه‌ی پایان‌یافته با نویسه‌ی پوچ، که اگر ابعاد شبکه نامعتبر باشد خالی است
$v0 خروجی عدد صحیح وضعیت شبکه (0 = ok، -1 = invalid columns، -2 = invalid rows)
$t0-9 موقت هر نوع برای ذخیره‌سازی موقت
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
MIPS Assembly Exercism

آماده‌اید اعداد OCR را شروع کنید؟

در Exercism ثبت‌نام کنید تا MIPS Assembly را همراه با 70 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.