গণিত, 166 137 বাইট
l:={i,j};s=Sign;f[p_,q_,h_,w_]:=Grid@Table[(1-Max[s[p-l]s[q-l],0])Boole[Abs@Mean[s@Det@{p-l+#,p-q}&/@Tuples[.5{1,-1},2]]<.6],{i,h},{j,w}]
আরও পঠনযোগ্য সংস্করণ:
l := {i, j}; s = Sign;
f[p_, q_, h_, w_] :=
Grid@Table[(1 - Max[s[p - l] s[q - l], 0]) Boole[
Abs@Mean[
s@Det@{p - l + #, p - q} & /@
Tuples[.5 {1, -1}, 2]] < .6], {i, h}, {j, w}]
এটি বলা একটি ফাংশন সংজ্ঞায়িত করে f। আমি ইনপুট এবং আউটপুট স্পেসিফিকেশন মোটামুটি উদারভাবে ব্যাখ্যা করেছি। ফাংশনটি fফর্ম্যাটটিতে ইনপুট নেয় f[{x0, y0}, {x1, y1}, height, width]এবং গ্রিডটি 1-সূচীযুক্ত হয়, উপরের বাম দিকে শুরু হয়। আউটপুটগুলির মতো দেখতে

1s হিসাবে প্রদর্শিত লাইন এবং এর হিসাবে পটভূমি সহ 0(এখানে দেখানো হয়েছে f[{2, 6}, {4, 2}, 5, 7])। একটি ম্যাথামেটিকাল ম্যাট্রিক্স বাঁক কাজটি 1s এবং 0একটি স্ট্রিং মধ্যে গুলি #s এবং. র সামনে অনেক অন্যান্য চ্যালেঞ্জ মধ্যে golfed হয়েছে, তাই আমি শুধু একটি মান পদ্ধতি ব্যবহার করতে পারে, কিন্তু আমি মনে করি না কিছু আকর্ষণীয় যোগ না।
ব্যাখ্যা:
সাধারণ ধারণাটি হ'ল লাইনটি যদি কিছু পিক্সেল দিয়ে যায় তবে পিক্সেলের চারটি কোণার কমপক্ষে একটি লাইনটির উপরে এবং কমপক্ষে একটি নীচের দিকে থাকে। ভেক্টর ( {x0,y0}কোণে) এবং ( {x0,y0}থেকে {x1,y1}) এর মধ্যবর্তী কোণটি পরীক্ষা করে কোন কোণটি রেখার উপরে বা নীচে রয়েছে কিনা তা পরীক্ষা করে দেখি: যদি এই কোণটি ইতিবাচক হয় তবে কোণটি উপরে থাকে, এবং কোণটি নেতিবাচক হলে কোণটি নীচে থাকে।
আমাদের যদি দুটি ভেক্টর থাকে {a1,b1}এবং {a2,b2}আমরা ম্যাট্রিক্সের নির্ধারকের চিহ্নটি সন্ধান করে তাদের মধ্যবর্তী কোণটি ইতিবাচক বা নেতিবাচক কিনা তা পরীক্ষা করতে পারি {{a1,b1},{a2,b2}}। (জটিল সংখ্যার এই ব্যবহৃত গাণিতিকটি করার আমার পুরানো পদ্ধতি, যা ছিল বেশ ... ভাল, জটিল))
কোডে এটি যেভাবে কাজ করে তা নিম্নরূপ:
{p-l+#,p-q}&/@Tuples[.5{1,-1},2]চার ভেক্টর পায় {x0,y0}এবং পিক্সেল চার কোণায় (সঙ্গে l:={i,j}, পিক্সেল এর স্থানাঙ্ক, তার আগে সংজ্ঞায়িত), এবং এছাড়াও মধ্যে ভেক্টর {x0,y0}এবং{x1,y1} ।
s@Det@...রেখা এবং চার কোণার (ব্যবহার করে s=Sign) মধ্যে কোণগুলির চিহ্নগুলি সন্ধান করে । এগুলি -1, 0 বা 1 সমান হবে।
Abs@Mean[...]<.6পরীক্ষা করে যে কয়েকটি কোণ ইতিবাচক এবং কিছু নেতিবাচক। এই বৈশিষ্ট্যযুক্ত 4-টিউপলসের চিহ্নগুলির সমস্তটির অর্থ -0.5 এবং 0.5 (অন্তর্ভুক্ত) এর মধ্যে রয়েছে, সুতরাং এর <পরিবর্তে ব্যবহার করে বাইট সংরক্ষণ করতে আমরা 0.6 এর সাথে তুলনা করি <=।
এখনও একটি সমস্যা রয়েছে: এই কোডটি ধরে নিয়েছে যে রেখাটি উভয় দিক দিয়ে চিরতরে প্রসারিত। সুতরাং আমাদের লাইনটি ক্রপ করতে হবে 1-Max[s[p-l]s[q-l],0](ট্রায়াল এবং ত্রুটির দ্বারা পাওয়া) দ্বারা গুন করে , যা 1লাইনটির শেষ বিন্দু দ্বারা সংজ্ঞায়িত আয়তক্ষেত্রের অভ্যন্তরে এবং এর 0বাইরেও।

বাকি কোডগুলি এই পিক্সেলগুলির একটি গ্রিড করে।
(বোনাস হিসাবে, 181 বাইটের জন্য, এখানে সম্পূর্ণ ভিন্ন পদ্ধতির সাথে পূর্বের চেষ্টা রয়েছে :)
Quiet@Grid@Table[(1-Max[Sign[{i,j}-#3]Sign[{i,j}-#4],0])Boole[#3==#4=={i,j}||2Abs@Tr[Cross@@Thread@{{i,j},#3,#4}]/Norm[d=#3-#4]<2^.5Cos@Abs[Pi/4-Mod[ArcTan@@d,Pi/2]]],{i,#},{j,#2}]&