با برندگان 2019 مسابقات قهرمانی علوم کامپیوتر ملاقات کنید!

با برندگان 2019 مسابقات قهرمانی علوم کامپیوتر ملاقات کنید!

ملاقات کنید برندگان امسال! از بالا سمت چپ ، در جهت عقربه های ساعت: برنده دانش آموز اکسل تورو ، برنده معلم لاگین واکر ، راشل رابینسون برنده جایزه تنوع AP از طرف دبیرستان اردری کیل ، برنده دولت پل فاستر و برنده سازمان Mission Corporation Development Corporation.

در جشن هفته آموزش علوم رایانه 2019 (CSEdWeek) ، انجمن معلمان علوم کامپیوتر (CSTA) و Code.org با افتخار سومین سالانه قهرمانان جوایز علوم کامپیوتر را اعلام می کنند.

از توسعه یک جفت " این برندگان برای کمک به کسانی که دارای مشکلات بینایی هستند ، برای ادغام علوم رایانه در برنامه درسی منطقه که به بیش از 25000 دانش آموز خدمات ارائه می دهد ، نماینده دانش آموزان ، معلمان ، مناطق ، مدیران و سازمان هایی است که تلاش می کنند آموزش علوم کامپیوتر را برای همه در دسترس قرار دهند.

از بین بیش از 200 نامزد انتخاب می شوند ، برندگان جوایز خود را در رویداد ویژه شروع CSEdWeek 2019 در 9 دسامبر در سانتافه هندی اهدا می کنند مدرسه ای در سانت فه ، نیومکزیکو. پخش زنده را در YouTube یا صفحه فیس بوک CSEdWeek تماشا کنید.

برنده دانش آموز - اکسل تورو (آگوادا ، پورتوریکو)

اکسل یک جفت "عینک هوشمند" برای کمک به افراد در زمینه بصری ایجاد کرد نقص ها در جهان حرکت می کنند این عینک ها از امواج صوتی برای اندازه گیری فاصله بین کاربر و موانع احتمالی استفاده می کنند و همچنین از هوش مصنوعی و دوربین برای شناسایی اشیاء برای استفاده کننده استفاده می کنند. کل دستگاه با رزبری پای صفر کار می کند که نصف اندازه یک کارت اعتباری است. در اینجا بیشتر بخوانید.

برنده معلم - لاگین واکر (نیویورک ، نیویورک)

لاگین در مدت بیش از دو سال یک بخش کامل علوم کامپیوتر در آکادمی هنرهای City College ایجاد کرد - تنها گروهی در مدرسه است که دو دوره AP ارائه می دهد. دانش آموزان او از دریافت هیچگونه آموزش علوم رایانه به گذراندن دوره های آموزشی در زمینه زبان های برنامه نویسی ، دسترسی به تیم رباتیک و فصل Girls Who Code می گذرد. علاوه بر این ، اکثریت شاگردان AP لاگین امتحان اصول AP CS خود را گذرانده اند و یک سوم از آن به بعد به سراغ AP CSA رفته اند. اینجا بیشتر بخوانید.

برنده مدیریت - پل فاستر (اسپرینگفیلد ، MA)

پل مدیر ارشد اطلاعات و پاسخگویی در مدارس دولتی اسپرینگفیلد در ماساچوست است. اکثر دانش آموزان در منطقه پل به طور سنتی به آموزش علوم کامپیوتر دسترسی نداشتند ، بنابراین پل با مشارکت با دانشگاه ماساچوست آمهرست برای ایجاد یک برنامه درسی علوم رایانه در مدارس ابتدایی برای 33 مدرسه ابتدایی منطقه ، به رفع این شکاف کمک کرد. این برنامه درسی تا پایان سال 2020 ادغام می شود. اینجا را بیشتر بخوانید.

برنده سازمان - Mission Economic Development Corporation (Mission، TX)

جایزه امسال سازمان قهرمانان CS ارائه می شود به شرکت توسعه اقتصادی Mission. Mission EDC ، یکی از اجزای شهر ماموریت ، تگزاس ، برای اولویت بندی علوم رایانه و آموزش STEM برای کل شهر تلاش کرده است. این سازمان با آموزش Mouse Inc (مستقر در شهر نیویورک) همکاری کرد تا 100 معلم و 20 مشاور در علوم کامپیوتر آموزش دهد. ماموریت EDC فرصت هایی را برای زنان جوان و دانشجویان غیر دودویی از طریق برنامه کارآموزی CREW ، که شامل تابستان است ، در اولویت قرار می دهد.اردوهای برنامه نویسی و آموزش مداوم در مهارت های تجاری و حرفه ای. اینجا بیشتر بخوانید.

برنده جایزه تنوع AP - دبیرستان اردری کیل (شارلوت ، NC)

دبیرستان اردری کل در شارلوت ، کارولینای شمالی بیشترین تعداد دانش آموز دختر را داشت امتحان اصول علوم رایانه AP در مدارس با استفاده از برنامه درسی Code.org در طول سال تحصیلی 2017-2018. از 344 شرکت کننده در آزمون ، 117 نفر از آنها زن جوان بودند! بیشتر اینجا بخوانید.

در علوم کامپیوتر چه چیزی باید یاد بگیرید؟

در علوم کامپیوتر چه چیزی باید یاد بگیرید؟

شاید شما وسوسه شدم فکر کنم این یعنی یادگیری برنامه نویسی. اما همه اینها فقط ابزارها و قراردادهای فرهنگی خاصی هستند. آنها یک آشفتگی بی ربط گیج کننده هستند.

با فناوری های جدید ، چارچوب های جدید و مد های جدید مدیریتی که هر ساله می آیند و می روند ، احساس بدی برای مبتدیان دارم. در اینجا شما فقط سعی می کنید کد نویسی را بیاموزید و در تمام این مسیرهای مختلف یادگیری غرق شده اید.

آیا توسعه وب را یاد می گیرید؟ واکنش بومی؟ iOS بومی؟ اندروید؟ وحدت؟ غیر واقعی؟ PHP؟ جاوا اسکریپت؟ سوئیفت چطور؟

علاوه بر این ، شما از طرف افرادی که ایدئولوژی های مختلف برنامه نویسی را تبلیغ می کنند ، مورد حمله قرار گرفته اید. آیا برنامه نویسی شی گرا یک راه واقعی است؟ آیا باید از آن صرف نظر کنیم و برنامه نویسی کاربردی را به عنوان راهی برای روشنگری در نظر بگیریم؟

همه اینها به نظر می رسد که شما باید تصمیمات مهمی بگیرید. اگر توسعه دهنده برنامه های تلفن همراه هستید ، آیا از SwiftUI استفاده می کنید یا از آن استقبال می کنید ، یا در راه های قدیمی و عالی Objective-C ثابت قدم و ثابت قدم هستید؟

کدام درست است؟ راه تاریکی و ناامیدی کدام است؟

گم شدن در پیچ و خم آسان است ، اما در واقع این طرز تفکر مشکل دارد. ما ده ها هزار سال آن را امتحان کردیم و اساساً به جایی نرسید.

من دوست دارم آن را تفکر بر اساس ایدئولوژی یا "دلیل محض" بنامم. عده ای در فلسفه آن را "عقل گرایی" نامیده اند. > استدلال شما نیازی به اطلاع از داده ها یا شواهد از دنیای خارج ندارد. شما فقط باید در قلمرو ایده ها بمانید.

به این ترتیب ، "بحث" در مورد یک راه واقعی برای تبدیل برنامه های رایانه ای به یک روش برنامه نویسی در مقابل روش دیگر ، و راهی که می فهمید آیا ایدئولوژی مورد علاقه شما این است که استدلالهای مناسب را به نفع آن ارائه دهید.

البته ، اگر این کار را انجام دهید ، طرف مقابل همیشه گوش می دهد و دقیقاً به همان نتیجه ای می رسد که به آن رسیده اید. همه شما برنامه نویسی کاربردی را انتخاب می کنید ، به خانه می روید و سپس همه از برنامه نویسی کاربردی استفاده می کنند ، زیرا این روش صحیح ساخت برنامه ها است ، همانطور که به طور منطقی با اثبات ریاضی نشان داده شده است.

برنامه نویسی حل مسئله

اما در عمل ، برنامه نویسی در دنیای واقعی کاملاً متفاوت است. این بحث بین دو ایدئولوژی متضاد نیست. این در مورد حل برخی از مشکلات بسیار خاص در دنیای واقعی است ، مشکلی که ما هر روز در آن زندگی می کنیم و تجربه می کنیم (چه بخواهیم و چه نخواهیم).

اگر در حال ساخت یک بازی ویدیویی هستید ، باید آن را حل کنید یک لیست لباسشویی از مشکلات خاص ، و شما از کد برای بدست آوردن این ماشین فیزیکی ، رایانه ، برای حل آنها استفاده می کنید.

چگونه می توانم آن را ایجاد کنم تا شخصیت پخش کننده من با عرض و ارتفاع مناسب کشیده شود؟ < /p>

چگونه می توانم آن را با نقشه کاشی برخورد کنم؟

چگونه می توانم این شخصیت بازی را به فیزیک پاسخ دهم؟

چگونه بازیکن را ترسیم کنم شخصیت به عنوان یک سری از فریم های هنری پیکسل متحرک در حالی که نگه داریدانیمیشن صاف است و مانع از تحریف هنر پیکسل می شود در حالی که من آن را با یک ضرب غیر صحیح مقیاس می کنم؟

همه اینها مشکلات عملی هستند که باید آنها را حل کنید.

من با برنامه ریزی منطقی از قبل این بازی را نساختم. من با حل یکی از مشکلات عادی پس از دیگری ، در یک جهان فیزیکی که از قوانین طبیعی سخت پیروی می کند ، این کار را انجام دادم. ابزارهایی که می توانیم برای حل مشکلاتی مانند مواردی که اخیراً ذکر کرده ام به کار ببریم. نکات مهمی که به ما می آموزد راه حل های بی موقع برای این گونه مشکلات است: الگوریتم ها ، ساختار داده ها ، عرصه های حافظه ، سایه بان های راس و قطعه و غیره.

وقتی به این فکر می کنید که چه چیزی یاد بگیرید یا چه چیزی برای ادامه تحصیل در علوم کامپیوتر ، از شما می خواهم یک آزمایش فکری کوچک انجام دهید.

از خود بپرسید: "اگر زمین به گرد و غبار تبدیل می شد و تعداد کمی انسان زنده می ماندند ، آیا بازماندگان سرانجام این چیز را دوباره کشف می کردند؟ در حال یادگیری هستم؟ "

اگر پاسخ" بله "است ، پس ارزش یادگیری دارد.

اگر پاسخ" نه "است ، ایدئولوژی یا جزم است و بنابراین نیست باید به آن توجه کرد.

آیا حافظه فیزیکی کامپیوتر را دوباره کشف می کنیم؟

بیایید یک مثال بسیار اساسی را در نظر بگیریم. اگر زمین نابود می شد ، آیا دوباره حافظه کامپیوتر را کشف می کردیم؟ تقریباً بله ، زیرا اگر مکان فیزیکی برای ذخیره داده ها ندارید ، در مورد انواع مشکلاتی که می توانید در رایانه حل کنید بسیار محدود شده اید.

بدون حافظه ، توانایی خود را از دست می دهید برای ذخیره کردن چیزها ، به این معنی که نمی توانید از چیزهای هوشمندانه مانند جداول هش برای حل مشکلاتی مانند محاسبه فاکتوریل استفاده کنید. همچنین نمی توانید از پشته برنامه برای انجام بازگشت استفاده کنید. کل محاسبات به سرعت متوقف می شود.

بیشتر محاسبات بدون تصور از حافظه به سادگی امکان پذیر نیست.

بنابراین اولین کسی که حافظه رایانه را "کشف" کرد ، بنابراین ، محاسبات را تا حدی بهبود می بخشد که بارها و بارها اختراع می شود ، مهم نیست چند بار تمدن را به خاک می اندازید.

برنامه نویسی شی گرا ، مثال مثال p> این در مورد برنامه نویسی شی گرا صادق نیست.

شما می توانید هرگونه مشکل برنامه نویسی را بدون برنامه نویسی شی گرا حل کنید.

به این دلیل است که در اصل کامپیوترها نیستند شی گرا نیست از نظر فیزیکی چیزی به عنوان یک شی یا کلاس در سخت افزار وجود ندارد. هیچ مشکلی که حل می کنید مستلزم استفاده از اشیاء یا کلاس ها برای حل آن نیست.

برنامه نویسی شی گرا فقط یک لایه اضافی است که ما اختراع کرده ایم ، یک رسم فرهنگی ، راهی برای سهولت سازماندهی کد به اما ما می توانیم بدون آن و بدون برنامه نویسی شی گرا ، همه مشکلاتی را که قبلاً حل کرده ایم حل کنیم.

بنابراین برنامه نویسی شی گرا ضروری نیست.

لزوماً چیزی نیست که ما بارها و بارها آن را کشف کنیم ، زیرا برای حل انواع مشکلاتی که ما نیاز به حل آنها داریم ، کاملاً لازم نیست.

شما می توانید مشکلات مشابه را با برنامه نویسی شی گرا حل کنید یا بدون آن. واقعاً مهم نیست (مگر اینکه به دنبال عملکرد باشید ، پس قطعاً نمی خواهید شی گرا باشید).

باید یاد بگیریدالگوریتم ها و تکنیک هایی که ما نمی توانیم بدون آنها انجام دهیم

اگر در زمینه کامپیوتر مشغول به کار هستید ، باید انواع کارهایی را که ما نمی توانیم انجام دهیم بیاموزید.

این س yourselfال را از خود بپرسید. آیا می توان مشکلی را که من حل می کنم بدون نیاز به دانستن یا اهمیت دادن به این موضوع حل کرد؟

آیا می توانید شبیه سازی فیزیک را بر روی یک شخصیت بازی بدون نیاز به اطلاع از موناد و فانکتور انجام دهید یا " خالص ”برنامه نویسی کاربردی؟

بله. این به این دلیل است که برنامه شما با سخت افزار فیزیکی اجرا می شود. این شامل یک دنباله از دستورالعمل های سخت است که خود به شدت انتزاعی نیستند. این دستورالعمل ها کاملاً ملموس هستند. آنها باعث می شوند کامپیوتر وضعیت ترانزیستورها را که شامل بازنمایی داده هایی است که برنامه شما در آنها دستکاری می کند تغییر دهد.

من نمی گویم که ریاضیات برای محاسبات مهم یا اساسی نیست. من می گویم برخی از مفاهیم و محدودیت ها ، مانند آنهایی که برنامه نویسان کاربردی از آنها حمایت می کنند ، برای حل اکثر مشکلات عملی که ما از رایانه برای حل آنها استفاده می کنیم ، نیازی ندارند.

شما نیازی به درک زیاد ندارید ریاضیات انتزاعی برای استفاده از دستورالعمل های سخت افزاری که روی CPU شما قرار دارد ، برای شبیه سازی فیزیک استفاده کنید. شما باید ریاضیات و فیزیک را بدانید ، اما هنوز هم می توانید در مورد فیزیک بدون هیچ چیز انتزاعی و شگفت انگیزی مانند مونادها استدلال کنید.

ایده موناد چیزی به گفتگو نمی افزاید. مشکل را حل نمی کند. کاملاً انتزاعی است. شما می توانید انتخاب کنید که از آنها استفاده کنید یا نه. می توانید مشکل را به صورت کاملاً کاربردی حل کنید یا خیر. برنامه نویسی عملکردی محض یک انتخاب نرم است ، نه یک محدودیت سخت برای حل مشکل. نیازی به دانستن آن ندارید.

اگر زمین به زمین اصابت می کرد ، آیا ما کامپیوترهای فیزیکی را با مجموعه دستورالعمل های سخت افزاری دوباره کشف می کردیم؟

من فکر می کنم پاسخ این است آره. داده های دیگر کجا زندگی می کنند؟ با توجه به نقطه شروع تکنولوژیکی مان ، جز الکترون و سیم چه چیز دیگری می توانیم استفاده کنیم؟

آیا مواد فیزیکی دیگری وجود دارد که خواص و فراوانی نسبی آنها مانند سیلیکون باشد؟ من دانشمند مواد نیستم ، اما همانطور که فهمیدم ما سیلیکون را برای خواص فیزیکی و فراوانی نسبی آن انتخاب کرده ایم.

پس از آخرالزمان ، ما احتمالاً در نهایت کامپیوترهایی را خلق می کنیم که امروزه هستند. ممکن است انحرافات جزئی وجود داشته باشد ، اما موضوع کلی یکسان است.

ما دارای CPU ها ، حافظه ، GPU ها ، حافظه پنهان L1 ، L2 و L3 ، سخت افزاری برای حل مشکلات خاص ، چند رشته ای برای موازی سازی خواهیم بود. ما تا آنجا که می توانیم فیزیک را تحت فشار قرار می دهیم تا حداکثر کارایی ممکن را از ماشینهای ساخته شده بدست آوریم ، همانطور که امروز انجام می دهیم.

همه چیز به ریاضیات و فیزیک برمی گردد ، علم تجربی سختی است نظریه

آیا می توانید موضوع را در اینجا مشخص کنید؟ همه چیزهایی که بارها و بارها کشف خواهیم کرد ، به هر طریقی ، به سخت افزار برمی گردد. آنها در نهایت به ریاضیات و فیزیک باز می گردند.

فیزیک به تجربه گرایی برمی گردد ، یا با مشاهده جهان ، ثبت داده ها و اجازه دادن به اطلاعات برای درک ما ، اطلاعات را در مورد جهان بدست می آورد.

ریاضی عبارت است از گرفتن مواردی که مشاهده می کنیم ، توجه به الگوها ، رسمیت بخشیدن به آنها و استفاده از آنها برای ساختن نظریه ها.

وقتیما نظریه و شواهد را گرد هم می آوریم ، این چیز زیبایی را که روش علمی می نامیم به دست می آوریم.

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

ما لزوماً بارها و بارها چیزهای نرم را کشف نخواهیم کرد زیرا آنها به رویدادهای تصادفی مانند یک مورد خاص بستگی دارند. شخصی که در زمان معینی متولد می شود ، آن شخص دارای ایده است ، دیگران معتقدند که ایده آن شخص متقاعد کننده است و آن را گسترش می دهد ، و غیره.

دنیای نرم دنیای ایدئولوژی ها و روش شناسی برنامه نویسی است.

اسکرام است. چابک است این TDD ، برنامه نویسی جفت ، تخته کانبان ، آبشار ، "کدگذاری تمیز" است. این زبانه ها در مقابل فضاها ، مهاربندهای فرفری در انتهای خط یا مهاربندهای فرفری تحت نام تابع است. علوم رایانه از افرادی که نمی توانند حقیقت را از دروغ جدا کنند ، حمایت می کند.

اما در حقیقت ، علوم رایانه از ریاضیات و فیزیک مطلع می شود ، این قوانین جهان است که بدون تغییر باقی می ماند. اینجا هستید تا آنها را تجربه کنید یا نه.

بنابراین ، اگر می خواهید علوم کامپیوتر را بیاموزید ، باید با حل مسئله که ریشه در ریاضی و علوم تجربی دارد ، شروع کنید. شما باید الگوریتم ها و تکنیک هایی را بیاموزید که امکان حل انواع مشکلاتی را که ما برای حل آنها از رایانه استفاده می کنیم ، میسر می سازد.

اگر می توانید مشکل را به همان اندازه م knowingثر حل کنید ، بدون آنکه از یک چیز معروف مانند node.js اطلاع داشته باشید ، پس node.js بی ربط است و نیازی نیست به آن اهمیت دهید. این فقط یک اختراع فرهنگی است و مانند همه چیزهای نرم ، از مد می افتد و چیز دیگری جایگزین آن می شود.

از قلمرو نرم دور بمانید.

توجه کنید برای افرادی که مشکلات سخت را با الگوریتم ها و تکنیک های بی زمان حل می کنند. آنها چیزی برای آموزش به شما ندارند.

کجا مرا پیدا کنند

نشان Lisp یک رایانه مستقل و متناسب با برنامه نویسی Lisp است

نشان Lisp یک رایانه مستقل و متناسب با برنامه نویسی Lisp است

Lisp یک زبان برنامه نویسی سطح بالا است ، مانند پایتون ، ویژوال بیسیک و PHP. این دومین زبان قدیمی سطح بالا-با استانداردهای مدرن ما-درست بعد از Fortran است. اما ، هنوز هم بسیار محبوب است و دارای چندین گویش پر رونق است. دیوید جانسون دیویس راهی برای برنامه ریزی در لیسپ در حال حرکت می خواست ، و چه راهی بهتر از این با نشان وجود دارد؟

همانطور که احتمال می دهید این نشان لیسپ به شدت از نشان بلگراد ووجا آنتونیک الهام گرفته شده است. این نشان ، که به شرکت کنندگان در Hackaday Supercon 2018 نیز اهدا شد ، یک رایانه دستی است که می تواند برای اجرای و برنامه نویسی کد BASIC استفاده شود. جانسون دیویس قبلاً رایانه کوچک کوچک Tisp Lisp 2 را طراحی کرده بود ، اما برای این کار به یک صفحه کلید خارجی نیاز داشت. برای نشان Lisp ، او یک صفحه کلید روی صفحه اضافه کرده است تا بتوانید Lisp را در هر کجا که هستید برنامه ریزی کنید-مخصوصاً کنفرانس بعدی شما!

این نشان Lisp در کف دست شما قرار می گیرد ، اما دارای قابلیت های زیادی است. مجهز به ATmega1284 است و دارای صفحه نمایش OLED مقیاس خاکستری 42x8 ، پین های ورودی و خروجی است و می تواند دستگاه های خارجی را از طریق I2C یا SPI کنترل کند. مهمتر از همه ، صفحه کلید دکمه ای لمسی به طور خاص با در نظر گرفتن برنامه نویسی Lisp طراحی شده است. اگر می خواهید نشان Lisp خود را داشته باشید ، جانسون دیویس همه فایل ها را در GitHub ارائه کرده است. همچنین می توانید PCB ها را مستقیماً از OSH Park با قیمتی حدود 50 دلار سفارش دهید.

نحوه برنامه ریزی یک کامپیوتر کوانتومی

نحوه برنامه ریزی یک کامپیوتر کوانتومی

نحوه ساختن کشتی های جنگی از دروازه های کوانتومی NOT

تحقیقات IBM https://www.flickr.com/photos/ibm_research_zurich/16662697764/in/album-72157667479583962/

توجه به این کد 2020: مقاله اکنون بسیار قدیمی است ، اما همه ایده ها هنوز یکسان هستند.

رایانه های کوانتومی نوع جدیدی از رایانه های عجیب هستند. آنها تعداد بی شماری از جهان های موازی را برای اجرای سریعتر برنامه ها می سوزانند و از اصولی استفاده می کنند که حتی اینشتین را گیج کرده است. آنها جعبه های معجزه آسایی جادویی هستند که جعبه های احمقانه ترانزیستورهای شما را در خاک می گذارند. آنها بدون شک موفق می شوند این فناوری جدید را هیجان انگیز جلوه دهند. اما آنها همچنین می توانند محاسبات کوانتومی را مانند یک هنر معمول به نظر برسند که فقط به باهوش ترین دانشمندان سپرده شده است. مطمئناً چیزی نیست که عموم برنامه نویسان به آن توجه داشته باشند!

من فکر نمی کنم این به هیچ وجه درست باشد. و با شرکت هایی مانند IBM و Google که در حال ساخت دستگاه های کوانتومی هستند ، زمان شروع بازی با برنامه نویسی کوانتومی اکنون فرا رسیده است.

در ابتدا نیازی به انجام کارهای فانتزی ندارید. می توانید سفر خود را به برنامه نویسی کوانتومی در همان مکانی آغاز کنید که بسیاری از ما سفر خود را به برنامه نویسی عادی آغاز می کنیم: با ساخت بازی.

نگران نباشید ، داشتن رایانه کوانتومی خود مورد نیاز نخواهد بود. برنامه های کوانتومی ساده را می توان به راحتی در یک رایانه معمولی شبیه سازی کرد. ما همچنین می توانیم به لطف IBM Q Experience مدتی از یک دستگاه کوانتومی واقعی وام بگیریم.

این اولین مورد از سری مقالاتی است که در آن برخی از برنامه های ساده ساخته شده با استفاده از SDK کوانتومی IBM را شرح می دهم. هر یک نسخه ای مستقل از Battleships خواهد بود ، با فرایندهای کوانتومی ساده ای که برای پیاده سازی مکانیک اصلی بازی استفاده می شود.

اینها اولین بازی هایی هستند که برای کامپیوتر کوانتومی ساخته شده اند. من جزئیات غم انگیز کد پشت بازی را به شما نشان می دهم تا امیدوارم بتوانید آزمایش برنامه نویسی کوانتومی را نیز شروع کنید.

کامپیوتر کوانتومی چیست؟

قبل از شروع در برنامه ، ما به برخی اطلاعات پیش زمینه نیاز داریم. من همه چیز را در مورد محاسبات کوانتومی به شما نمی گویم. ما فقط به اندازه کافی برای درک آنچه در بازی ما اتفاق می افتد دریافت می کنیم.

یک رایانه معمولی بر اساس بیت ها ساخته شده است: متغیرهایی که فقط دو مقدار ممکن دارند. ما اغلب آنها را 0 و 1 می نامیم ، اگرچه در زمینه جبر بولی ممکن است آنها را درست و غلط بنامیم. مهم نیست که ما آنها را چه می نامیم. نکته مهم این است که فقط دو حالت وجود دارد.

با بیت ها می توان عملیات ساده بولی را مانند NOT ، AND و OR انجام داد. اینها اجزای اصلی محاسبات هستند. با این کارها می توانیم هر کاری را انجام دهیم. هر متغیر پیچیده تر از یک بیت (مانند int یا float) فقط مجموعه ای از تعداد زیادی بیت است. هرگونه عملیات پیچیده تر از AND یا NOT در واقع بسیاری از آنها به هم چسبیده اند. در ابتدایی ترین حالت ، این یک کامپیوتر معمولی است.

رایانه های کوانتومی بر اساس بیت های کوانتومی یا کیوبیت ها ساخته می شوند. اینها همچنین دارای دو مقدار ممکن هستند که می توان آنها را 0 و 1 نامید. اما قوانین مکانیک کوانتومی امکانات دیگری را نیز فراهم می کند ، که ما آنها را حالتهای برهم نهی می نامیم.

در برخی مواردبدیهی است ، حالات برهم نهی مقادیری هستند که تا حدی بین افراط 0 و 1 وجود دارند. ما می توانیم یک کیوبیت را به صورت یک کره ، با 0 و 1 که روی قطب های مخالف نشسته اند ، تصور کنیم. حالات برهم نهی همه نقاط احتمالی دیگر روی سطح هستند.

اقتباس از https : //commons.wikimedia.org/wiki/File: Bloch_Sphere.svg

علاوه بر 0 و 1 ، این تصویر همچنین چند حالت مهم برهم نهی را نشان می دهد. یکی u3 (0.5*pi ، 0،0) | 0⟩ نامیده می شود. مسلماً نام چندان جذابی نیست ، اما در این مقاله به معنای واقعی آن خواهیم پرداخت.

این طرز فکر در مورد کیوبیت ها آنها را کمی متغیرهای پیوسته به نظر می رساند. ما می توانیم هر نقطه ای را در سطح یک کره (مانند نقطه ψ در تصویر) با استفاده از مختصات قطبی با چند زاویه (θ و φ) نشان دهیم. بنابراین شما را ببخشند که فکر می کنید کیوبیت فقط یک جفت شناور است. به یک معنا ، آنها هستند. اما به معنای دقیق تر ، اینطور نیست.

تفاوت مهم این است که ما هرگز نمی توانیم بیش از یک اطلاعات دوتایی را از کیوبیت استخراج کنیم. قوانین فیزیک خود مانع از این می شود که بفهمیم دقیقاً چه کار می کنند. ما نمی توانیم از یک کیوبیت جزئیات دقیق وضعیت برهم نهی آن را بخواهیم. ما فقط می توانیم آن را مجبور کنیم بین دو نقطه مخالف کره (مانند 0 و 1) یکی را انتخاب کند. اگر چیزی غیر از این دو حالت باشد ، فقط باید به طور تصادفی یکی یا دیگری را تعیین کند.

بنابراین کیوبیت دارای برخی از ویژگیهای یک متغیر پیوسته و برخی از ویژگیهای یک حالت گسسته است. در حقیقت هیچ کدام نیست. این یک متغیر کوانتومی است. در این حالت ، همه کشتی ها فقط یک مربع را اشغال می کنند ، اما برخی از آنها بیشتر از بقیه غرق می شوند. ما یک کشتی خواهیم داشت که می تواند توسط یک بمب غرق شود ، یک کشتی که به دو بمب نیاز دارد و یکی به سه مورد نیاز دارد.

برای شبیه سازی این امر در یک کامپیوتر کوانتومی ، می توانیم از یک کیوبیت برای هر کشتی استفاده کنیم. حالت 0 را می توان با یک کشتی کاملاً سالم و 1 را با یک کشتی تخریب شده شناسایی کرد. حالات برهم نهی با سفر یک کشتی به سمت نابودی مطابقت دارد.

شبیه سازی یک کشتی نابود شده با یک ضربه بسیار آسان است. ما می توانیم آن را در حالت 0 مقداردهی اولیه کنیم ، و در صورت ضربه زدن یک NOT را اعمال کنیم. هنگامی که آن را در حالت 1 پیدا می کنیم ، می دانیم که از بین رفته است.

بیایید ببینیم که چگونه این فرایند ساده را بر روی یک کامپیوتر کوانتومی پیاده سازی کنیم. در حال حاضر نگران کشتی های دیگر ، ورودی و خروجی نیستیم.

برای این کار از SDK کوانتومی QISKit برای راه اندازی یک برنامه کوانتومی استفاده می کنیم. در اینجا اسکریپتی وجود دارد که یک کشتی را اولیه می کند ، آن را بمباران می کند و سپس بررسی می کند که آیا هنوز شناور است یا نه. c = ClassicalRegister (1) # مقداردهی اولیه یک ثبت با یک بیت معمولی qc = QuantumCircuit (q، c) # ایجاد وبرنامه کوانتومی خالی c [0]) # کیوبیت را اندازه بگیرید

ابتدا این مقدار تمام بیت های مورد نیاز ما را مشخص می کند: هم کوانتومی و هم معمولی. در این مثال ما یک qubit واحد را در یک ثبات به نام q تعریف کرده ایم. ما از این qubit در کد به عنوان q [0] یاد می کنیم. از آنجا که خروجی ها باید دارای اطلاعات طبیعی خوب و خواندنی برای انسان باشند ، ما همچنین یک بیت معمولی را در یک ثبات به نام c تعریف می کنیم. حالتی که می خواهیم با آن شروع کنیم ، نیازی به آمادگی بیشتر نیست.

در مرحله بعد می خواهیم این q [0] = 0 ، یک کشتی کاملاً دست نخورده را گرفته و یک NOT را انجام دهیم. با یک بیت معمولی و یک زبان برنامه نویسی معمولی ، ممکن است این را به صورت q [0] =! q [0] (برای C ++) یا q [0] = نه q [0] (برای پایتون) پیاده سازی کنیم. در QISKit می توان آن را به روش های مختلف انجام داد. ساده ترین کار این است که از عملیات به نام x و y استفاده کنید. در اینجا چند مثال از نحوه استفاده از آنها ، با خطوط معادل C ++ و Python برای مقایسه آورده شده است.

 q [0] =! q [0]؛ \\ A C ++ style NOT 
 q [0] = not q [0] # A style Python NOT 
 qc.x (q [0]) # A QISKit style NOT < /pre> 
 qc.y (q [0]) # یک سبک دیگر QISKit NOT 

تفاوتهایی بین x و y وجود دارد که باید روزی با آنها کنار بیاییم. اما امروز نه.

احتمالاً متوجه شده اید که x و y در قطعه قبلی QISKit ظاهر نمی شوند. در عوض ما u3 (pi ، 0،0) داریم. این روش دیگری برای پیاده سازی NOT است.

 qc.u3 (math.pi، 0،0، q [0]) معادل y اما u3 به طور کلی عملیات پیچیده تری است. این سه آرگومان دارد و با تغییر آنها می توانیم کارهای دیگری انجام دهیم. 

توجه داشته باشید که هنگام اجرای این عملیات در QISKit ، چهارمین آرگومان به دست می آید ، یعنی کیوبیتی که ما آن را در حال استفاده از آن هستیم.

اولین استدلال زاویه ای است که بر حسب رادیان بیان می شود. این زاویه ای است که می خواهیم با آن حوزه کیوبیت خود را بچرخانیم. زاویه pi (یا math.pi هنگام اجرا در پایتون) مربوط به 180 درجه است. این بدان معناست که ما کره را کاملاً وارونه می کنیم. 0 به 1 و 1 به 0 حرکت می کند ، به همین دلیل است که این عملیات به عنوان NOT عمل می کند. برای انجام نیمی از NOT ما می توانیم به سادگی از نیمی از این زاویه استفاده کنیم: u3 (0.5*pi ، 0،0). یک NOT دوبار.

# سبک دیگر QISKit NOT
qc.u3 (math.pi/2،0،0 ، q [0])
qc.u3 (math.pi/2،0،0 ، q [0]) 

ما همچنین می توانیم یک سوم نه سه بار ، یا یک چهارم یک NOT را با نصف NOT و سپس انجام دهیم. دو هشتم یک NOT شما ایده را می گیرید.

آخرین خط قطعه QISKit ما

 qc.measure (q [0] ، c [0]) 

در این کیوبیت را اندازه می گیریم ما به q [0] می گوییم که باید تصمیم بگیرد که چه چیزی باشد: 0 یا 1. نتیجه سپس در c [0] ذخیره می شود ، آماده است تا توسط مغزهای غیر کوانتومی ما مورد بررسی قرار گیرد یا توسط کامپیوترهای غیر کوانتومی ما پردازش شود. به سپس مقدار c [0] برابر است باخروجی این محاسبه.

اگر بین راه اندازی اولیه و اندازه گیری کاری انجام ندادیم ...

 q = QuantumRegister (1)
ج = ClassicalRegister (1)
qc = QuantumCircuit (q، c) 
 qc.measure (q [0]، c [0]) 

… نتیجه همیشه باید c [0] = 0. باشد < /p>

اگر ما NOT ...

 q = QuantumRegister (1)
ج = ClassicalRegister (1)
qc = QuantumCircuit (q، c) 
 qc.u3 (math.pi، 0،0، q [0]) 
 qc.measure (q [0]، c [ 0]) 

..نتیجه همیشه باید c [0] = 1 باشد.

اگر ما فقط نصف یک NOT ...

 q = QuantumRegister ( 1)
ج = ClassicalRegister (1)
qc = QuantumCircuit (q، c) 
 qc.u3 (0.5*math.pi، 0،0، q [0]) 
 qc.measure (q [0] ، c [0]) 

… q [0] وقتی اندازه گیری شود بین 0 تا 1 خواهد بود. در واقع این حالت برهم نهی خواهد بود که قبلاً u3 (0.5*pi ، 0،0) | 0⟩ نامیده بودیم. اندازه گیری این که آیا این 0 است یا 1 ، آن را مجبور می کند که به طور تصادفی یکی یا دیگری را با احتمالهای مساوی انتخاب کند. تصادفی اضافی نیز در دستگاه های فعلی به دلیل نویز وجود دارد. اگرچه این در سطح قابل استفاده ای پایین است ، ما هنوز باید وجود آن را در ذهن داشته باشیم. بنابراین گاهی اوقات یک عدد 1 دریافت می کنیم که باید 0 داشته باشیم و برعکس.

به این دلایل ، اجرای یک برنامه کوانتومی بارها معمول است. سپس این فرایند لیستی از تمام خروجی هایی را که در طول این نمونه های زیاد ایجاد شده اند و تعداد دفعاتی که هر کدام اتفاق افتاده است ، باز می گرداند. a NOT برای ساختن بازی روی کامپیوتر کوانتومی.

ابتدا ، من به شما یک راز می دهم. رایانه های کوانتومی همیشه دستگاههای ترکیبی ، تا حدی کوانتومی و تا حدودی معمولی خواهند بود. مورد دوم برای کنترل ورودی ها و خروجی ها به منظور ارتباط با میمون های چوبی که می خواهند از دستگاه استفاده کنند ، مورد نیاز است.

به همین دلیل ، SDK های کوانتومی معمولاً در یک زبان برنامه نویسی استاندارد تعبیه شده اند. QISKit از پایتون استفاده می کند ، بنابراین ما می توانیم از یک برنامه پایتون برای مقابله با هر دو بخش عادی برنامه و ایجاد و اجرای مشاغل برای قسمت کوانتومی استفاده کنیم.

توجه به این نکته ضروری است که همه چیز هنوز در حال تحول است. و همه ما که در این روزهای اولیه برنامه های کوانتومی می سازیم ، ناگزیر این تکامل را هدایت خواهیم کرد.

برای اجرای برنامه ، به نصب Jupyter و همچنین وابستگی های SDK نیاز دارید. در اینجا می توانید اطلاعات بیشتری کسب کنید.

qiskit-community/qiskit-community-tutorials Permalink GitHub محل زندگی بیش از 50 میلیون توسعه دهنده است که برای میزبانی و مرور کد ، مدیریت پروژه ها و… github.com

اکنون بیایید کد را بررسی کنیم!

در ابتدا ، همه چیز نیاز به اجرای کد در IBM's Quantum Experience باید وارد شود.

 از qiskit import ClassicalRegister، QuantumRegister
از qiskit import QuantumCircuit ، اجرا 

در مرحله بعد باید در API ثبت نام کنیم تا در واقع بتوانیم مشاغل را در دستگاه کوانتومی واقعی اجرا کنیم.

 از واردات qiskit register

Qconfig را وارد کنید
qx_config = {
    "APItoken": Qconfig.APItoken ،
    "url": Qconfig.config ['url']}}

register (qx_config ['APItoken']، qx_config ['url']) 

این به فایل Qconfig اشاره دارد ، که برای راه اندازی به یک حساب در IBM نیاز دارید. نگران نباشید ، رایگان است! برای مشاهده جزئیات به اینجا مراجعه کنید.

در ادامه ما مجموعه ای از توابع را طراحی می کنیم که برای کنترل همه ورودی ها و خروجی های خسته کننده طراحی شده اند. از آنجایی که این بخشی از برنامه نویسی کوانتومی نیست ، ما در این مورد به جزئیات نمی پردازیم. دستگاهی که مورد استفاده قرار می گیردبرای قسمت کوانتومی برنامه.

 device = ask_for_device ()

از qiskit import Aer ، IBMQ
تلاش کردن:
    backend = Aer.get_backend (دستگاه)
جز:
    backend = IBMQ.get_backend (device) 

تابع ask_for_device () به سادگی از پخش کننده می پرسد که از دستگاه واقعی استفاده کند یا نه. در صورت پاسخ y ، دستگاه انتخاب شده ibmq_5_tenerife است: یک پردازنده کوانتومی پنج کیوبیت واقعی در آزمایشگاه های IBM. در صورت پاسخ n ، شبیه ساز به جای آن انتخاب می شود.

نکته مهم دیگری که باید تنظیم شود تعداد دفعات اجرا شدن هر کار است. این به این دلیل است که ما از نمونه های زیادی برای محاسبه آمار در مورد خروجی های احتمالی تصادفی استفاده می کنیم.

 shots = 1024 

هیچ دلیل جادویی برای 1024 وجود ندارد. اگر می توانید آن را تغییر دهید می خواهم.

در ادامه به راه اندازی تخته ها می پردازیم ، هر بازیکن سه مکان را برای قرار دادن سه کشتی انتخاب می کند. پنج موقعیت ممکن در دسترس است که مربوط به پنج کیوبیت در دستگاه ibmqx4 IBM است. من شبکه را اینگونه تجسم می کنم

 4 0
| \ /|
| \ /|
| \ /|
| 2 |
| /\ |
| /\ |
|/\ |
3 1 

اعداد نامهایی هستند که من برای هر موقعیت استفاده می کنم. آنها همچنین نام هایی هستند که IBM استفاده می کند ، بنابراین 2 موقعیت qubit q [2] است ، برای مثال.

انتخابهای انجام شده توسط بازیکنان در shipPos ذخیره می شوند. این یک ورودی برای هر یک از دو بازیکن دارد (بازیکن = 0 برای بازیکن اول ، بازیکن = 1 برای بازیکن دوم) ، و هر یک از سه کشتی که آنها قرار می دهند. shipPos [بازیکن] [کشتی] موقعیت (0 ، 1 ، 2 ، 3 یا 4) را برای کشتی شماره گذاری شده متعلق به بازیکن متعلق به بازیکن دارد.

اکنون زمان حلقه اصلی بازی است. در این قسمت از هر دو بازیکن می پرسیم که در خط حریف خود دوست دارند کجا بمباران کنند. سپس به بمب [بازیکن] [موقعیت] اضافه می شود ، که شمارش می کند چند بار بازیکن در طول بازی موقعیت را بمباران کرده است.

ما اکنون اطلاعات کافی برای راه اندازی برنامه کوانتومی داریم. ما می دانیم که کیوبیت ها قرار است کشتی باشند و کجا را بمباران کنند. بنابراین اکنون وقت آن است که کارهای مربوطه را با QISKit تنظیم کنیم.

در هر دور ما دو برنامه کوانتومی برای اجرا خواهیم داشت: هر کدام شبیه سازی عملکرد در شبکه یک بازیکن. برای نگهداری این برنامه ها از آرایه qc استفاده می کنیم.

 qc = []
برای بازیکن در محدوده (2):
    q = QuantumRegister (5)
    ج = ClassicalRegister (5)
    qc.append (QuantumCircuit (q، c)) 

هر برنامه با یک ثبت پنج بیت کوانتومی و کلاسیک برای پوشش کل شبکه اولیه می شود. برنامه شبکه ای یک پخش کننده معین را می توان با qc [player] قرار داد ، اگرچه توجه داشته باشید که بازیکن 1 در اینجا به عنوان player = 0 و بازیکن 2 به عنوان player = 1 نامیده می شود.

حال فرض کنید ما می خواهید بخش معینی از یک NOT را در یک کیوبیت خاص اعمال کنید. ما این کار را با خط زیر انجام می دهیم

 qc [player] .u3 (frac * math.pi، 0.0، 0.0، q [position]) 

اما frac و position با اعداد واقعی.

با استفاده از این می توانیم اضافه کنیمتمام بمب هایی که بازیکن حریف به سمت این شبکه شلیک می کند. برای شبکه بازیکن ، ما هر سه موقعیتی را که کشتی وجود دارد حلقه می کنیم. سپس یک خط به qc [player] برای هر بمبی که به اینجا ارسال شده است اضافه می کنیم.

قبلاً اشاره کردم که سه کشتی در این بازی همه دارای نقاط قوت متفاوت هستند. اولین موردی که بازیکن قرار می دهد توسط یک بمب غرق می شود ، اما دومی برای از بین بردن دو مورد نیاز دارد و سومی به سه مورد نیاز دارد.

از نظر کیوبیت ، این بدان معناست که بمبی که اولین کشتی را می زند کل NOT را اعمال می کند. بمبی که به کشتی دوم برخورد می کند ، نیمی از NOT ، و بمبی در کشتی سوم یک سوم NOT را اعمال می کند. کسر کسری سپس توسط کشتی مورد اصابت قرار می گیرد. برای این کار ما به سادگی از frac = 1/(کشتی+1) استفاده می کنیم.

پس از پایان بمباران ، وقت آن است که ببینیم چه اتفاقی افتاده است. برای این کار باید دستورات اندازه گیری را اضافه کنیم. هر کیوبیت در ثبت اندازه گیری می شود و نتایج در یک بیت معمولی مربوطه کپی می شود. این کار با

 برای qubit در محدوده (5) انجام می شود:
    qc [player] t.measure (q [qubit] ، c [qubit]) 

اکنون ما یک جفت برنامه کوانتومی داریم ، زمان اجرای آنها فرا رسیده است. این کار با استفاده از

 job = execute (qc ، backend ، shots = shots) 

در اینجا هنگامی که از پخش کننده درخواست کردیم دستگاه را روی کدام دستگاه اجرا کند ، قبلاً تعریف شد.

پس از ارسال کار ، می توانیم داده ها را استخراج کنیم.

 برای پخش کننده در محدوده (2):
    grid [player] = job.result (). get_counts (qc [player]) 

در اینجا نتایج را به grid کپی می کنم ، با نتایج بمباران کشتی های بازیکنان در grid [player]. < /p>

توجه داشته باشید که فراخوانی به job.result () منتظر می ماند تا کار در واقع متوقف شود. اگر در صف پشت سر دیگران با استفاده از دستگاه هستید ، ممکن است چند دقیقه طول بکشد.

نتایج به صورت دیکشنری در شبکه [پخش کننده] ذخیره می شوند. کلیدها رشته های بیتی هستند و بنابراین چیزی شبیه 110 هستند. راست ترین بیت c [0] است و بنابراین c [0] = 0 در این مثال بیت رشته. با پردازش نتایج می توانیم بفهمیم که چند اجرا از هر نتیجه (0 یا 1) برای هر یک از بیت های معمولی بدست آمده است. خسارت برای کشتی ما ما نمی توانیم 100٪ خسارت ناشی از اثرات سر و صدا (یا آب و هوا ، در صورت تمایل به توضیح در جهان) انتظار داشته باشیم ، بنابراین ما خسارت بیش از 95٪ را به معنای غرق شدن کشتی می شماریم.

بیایید چند خروجی نمونه از فرایند کوانتومی را بررسی کنید. فرض کنید یکی از بازیکنان سومین کشتی خود را در موقعیت 2 قرار داده است. بازیکن دیگر سپس آن را بمباران می کند. نتایج شبیه به چیزی است. کشتی در واقع آسیب هایی دید. به نتایج

 {'00110': 532 ، '00010': 492} 

در اینجاهمه نتایج دارای 1 در شکاف دوم سمت راست (یکی برای موقعیت 1) است. آن کشتی با یک بمب منهدم شد. با این حال ، در موقعیت 2 فقط نیمی آسیب دیده است ، بنابراین نیمی از نتایج برای آن 1 دارد.

این نتایج خوب و تمیز بودند ، بنابراین می توان گفت که آنها روی شبیه ساز انجام شده اند. در دستگاه واقعی می توانید انتظار داشته باشید که برای کشتی هایی که حتی بمباران نشده اند و برای کیوبیت هایی که کشتی نیستند 1 نتیجه بدست آورید.

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

هنگامی که درصد خسارت محاسبه شد ، به بازیکنان ارائه می شود. به عنوان مثال ، اگر فقط کشتی در موقعیت 2 مورد اصابت قرار گرفته باشد و 50٪ آسیب ببیند ، این به صورت

 نشان داده می شود؟ ؟
 | \ /|
 | \ /|
 | \ /|
 | 50٪ |
 | /\ |
 | /\ |
 |/\ |
 ؟ ؟ 

بازی همچنان درخواست بمب و اجرای سناریو را ادامه می دهد تا زمانی که یک بازیکن تمام کشتی های خود را از دست بدهد. در آن زمان بازیکن دیگر برنده می شود.

ممکن است توجه داشته باشید که بمباران کشتی سوم بازیکنان حدود 25 درصد خسارت وارد می کند. از آنجا که این کشتی یک سوم راه نابودی است ، ممکن است 33 درصد انتظار داشته باشید. دلیل آن مثلثات است. در این مرحله نیازی به پرداختن زیاد به آن نیست.

توجه به این نکته ضروری است که کل سناریو هر بار تکرار می شود. اگر زمان بین چرخش ها ممکن است فقط یک دقیقه باشد ، اما این برای کیوبیت ها تقریباً ابدی است. حتی در دمای 0.02 کلوین ، اطلاعات خیلی قبل از دور بعدی سوزانده می شد. همچنین ، نیاز ما به استخراج اطلاعات ، تمام کوانتوم دوست داشتنی را در سیستم مختل می کند. به این دلایل ، هر فرآیندی که به طور متقابل به تعامل انسان نیاز داشته باشد ، نیاز به قطعات کوانتومی دارد که از ابتدا برای هر ورودی جدید دوباره اجرا شود.

پس این تمام شد. کشتی های جنگی که بر روی کامپیوتر کوانتومی کار می کنند. نه شگفت انگیزترین استفاده از کامپیوتر کوانتومی ، و نه شگفت انگیزترین نسخه Battleships. اما برای من ، ترکیب این دو نیمی از لذت است!

در زیر می توانید به کد منبع کامل دسترسی داشته باشید.

QISKit/qiskit-tutorial qiskit -tutorial - مجموعه ای از نوت بوک های Jupyter با استفاده از Qiskitgithub.com

و در اینجا ویدئویی از بازی در حال انجام است.

داستان با نسخه دیگری از Battleships در قسمت 2 ادامه می یابد. < /p> نحوه برنامه ریزی یک کامپیوتر کوانتومی - قسمت 2 کشتی های نبرد با اندازه گیری های کوانتومیmedium.com