স্ট্রো পোলে সর্বাধিক ব্যাঘাত ঘটায়


9

প্রসঙ্গ

স্ট্র পোল এমন একটি ওয়েবসাইট যা সাধারণ / অনানুষ্ঠানিক পোল তৈরির উদ্দেশ্যে তৈরি। বিকল্পগুলির একটি তালিকা সহ সরবরাহ করা হয়েছে, ব্যবহারকারী তাদের পছন্দ (গুলি) নির্বাচন করতে পারেন এবং ভোটগুলি দীর্ঘায়িত হবে। স্ট্র পোলের দুটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য রয়েছে:

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

স্ট্র পোল তৈরির চেয়ে মজাদার একটি জিনিস ফলাফলের সাথে গোলমাল করছে। ব্যাহত হওয়ার দুটি প্রধান প্রকার রয়েছে:

  • সাধারণ ব্যাঘাত, যাতে আপনি সমস্ত বিকল্পের পক্ষে ভোট দিন
  • উন্নত বাধাগুলি, যাতে আপনি প্রভাবটি সর্বাধিকীকরণের জন্য কৌশলগতভাবে কোন বিকল্পগুলির পক্ষে ভোট চান তা বেছে নিন।

এই চ্যালেঞ্জে আপনি উন্নত বাধাগুলির জন্য একটি প্রোগ্রাম লিখবেন ।

ম্যাথ

গাণিতিকভাবে বিষয়গুলির জন্য, আমরা বলতে পারি যে ভোটের এনট্রপি যত বেশি হবে, একটি পোল তত বেশি ব্যাহত হবে। এর অর্থ হ'ল এমন একটি জরিপ যেখানে একক বিকল্পে সমস্ত ভোট রয়েছে তা মোটেই ব্যাহত হয় না, এবং যেখানে প্রতিটি বিকল্পের সমান সংখ্যক ভোট রয়েছে এমন একটি পোল সর্বাধিক ব্যাহত হয় (এটি চূড়ান্ত লক্ষ্য হ'ল)।

সংখ্যার তালিকার এনট্রপি [x1, x2, ..., xn]উইকিপিডিয়া থেকে নিম্নলিখিত সমীকরণ দ্বারা দেওয়া হয়েছে। P(xi)সম্ভাবনা xi, যা হয় xi / total_num_of_votes। যদি কোনও বিকল্প যদি এখনও অবধি শূন্য ভোট পেয়ে থাকে তবে তা কেবল সংক্ষেপে অন্তর্ভুক্ত থাকে না (এড়াতে log(0))। আমাদের উদ্দেশ্যে, লগারিদম আপনার পছন্দের যে কোনও বেসে থাকতে পারে।

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

উদাহরণস্বরূপ, এর ইন্ট্রপি [3,2,1,1]প্রায় 1.277বেস, ব্যবহার করে ।

পরবর্তী পদক্ষেপটি কী ভোটিং প্যাটার্নটি এন্ট্রপির সর্বাধিক বৃদ্ধির দিকে নিয়ে যায় তা নির্ধারণ করা। আমি বিকল্পগুলির যে কোনও উপসেটের পক্ষে ভোট দিতে পারি, উদাহরণস্বরূপ আমার ভোট হতে পারে [1,0,1,0]। এগুলি যদি আমার ভোট হয় তবে চূড়ান্ত ট্যালিটি হল [4,2,2,1]। এনট্রপি 1.273প্রদানের পুনরায় গণনা করা, এনট্রপির হ্রাস দেয় , যার অর্থ এটি ব্যাহত হওয়ার এক ভয়ানক প্রচেষ্টা। এখানে আরও কিছু বিকল্প রয়েছে:

don't vote
[3,2,1,1] -> 1.277

vote for everything
[4,3,2,2] -> 1.342

vote for the 1s
[3,2,2,2] -> 1.369

vote for the 2 and 1s
[3,3,2,2] -> 1.366

এই থেকে, আমরা যে অনুকূল ভোটিং প্যাটার্ন হয় [0,0,1,1]যেহেতু এটি এনট্রপি সর্বশ্রেষ্ঠ বৃদ্ধি দেয়।

ইনপুট

ইনপুটটি ক্রমবর্ধমান, অ-নেতিবাচক পূর্ণসংখ্যার একটি খালি খালি তালিকা। উদাহরণ অন্তর্ভুক্ত [3,3,2,1,0,0], [123,23,1]বা এমনকি [4]। যে কোনও যুক্তিসঙ্গত বিন্যাস অনুমোদিত।

আউটপুট

আউটপুট সত্যবাদী এবং মিথ্যা মানগুলির একটি তালিকা (ইনপুট সমান দৈর্ঘ্য), যেখানে সত্যগুলি সেই বিকল্পগুলির প্রতিনিধিত্ব করে যেখানে আমি সর্বাধিক ব্যাঘাত ঘটাতে চাইলে আমার ভোট দেওয়া উচিত। যদি একাধিক ভোটিং প্যাটার্ন একই এনট্রপি দেয় তবে যে কোনও একটি আউটপুট হতে পারে।

বিজয়ী মানদণ্ড

এটি কোড-গল্ফ, কম বাইট ভাল।

পরীক্ষার কেস

[3,2,1,1] -> [0,0,1,1]  (from 1.227 to 1.369)

[3,3,2,1,0,0] -> [0,0,0,1,1,1] (from 1.311 to 1.705)

[123,23,1] -> [0,1,1] (from 0.473 to 0.510)

[4] -> [0] OR [1] (from 0 to 0)

[7,7,6,6,5] -> [0,0,1,1,1] (from 1.602 to 1.608)

[100,50,1,1] -> [0,1,1,1] (from 0.707 to 0.761)

আমি যদি আমরা এনট্রপি হ্রাস করতে চাই তবে কী হবে তা ভাবছি ।
ক্যালকুলেটরলাইন

1
পরীক্ষার কেসগুলি হিউরিস্টিকের সাথে সামঞ্জস্যপূর্ণ বলে মনে হচ্ছে "নীচের গড়ের মানগুলি বাড়ান" " আপনি কিছু কৌশলযুক্ত পরীক্ষা মামলা অন্তর্ভুক্ত করতে পারেন?
xnor

@ এক্সনর প্রদত্ত যে এনট্রপিটি একটি সমান বিতরণ দিয়ে সর্বাধিক করা হয়, এটি একটি ভাল উত্তরাধিকারী হতে চলেছে! আসলে, এটি এমনকি সর্বদা সর্বোত্তম কৌশল হতে পারে .. সম্ভবত কেউ একটি ভাল প্রান্ত মামলা সম্পর্কে চিন্তা করতে পারেন?
এ সিমন্স

উত্তর:


3

গণিত, 19 44 বাইট

... (উচ্চস্বরে অভিযোগ করা)

(x=Median@#[[;;Mod[Length@#,2]-3]];#≤x&/@#)&

টেস্ট:

{Test, data, goes, here};
(x=Median@#[[;;Mod[Length@#,2]-3]];#≤x&/@#)&
%%+Boole/@%

এটি {100,50,1,1}যেখানে ফিরে আসে সেখানে ব্যর্থ হয় {False, False, True, True}, যার ফলে একটি এনট্রপি হয় 0.758{False, True, True, True}এর একটি এনট্রপি প্রদান করে 0.761
আইপিওলার

@ টেপকেসটি খুঁজে পাওয়ার জন্য আইপাইলারকে ধন্যবাদ thanks
PhiNotPi

1
(হাহাকার করে মারা যায়)
ক্যালকুলেটরফাইন

2
এখানে প্রতি এটি মুছে ফেলা উচিত।
Rɪᴋᴇʀ

1
..Fixed। (আরও জোরে অভিযোগ করা)
ক্যালকুলেটরফলাইন


1

এমএটিএল , 24 বাইট

FTinZ^tG+!ts/tYl*s4#X<Y)

এটি ভাষা / সংকলকের 13.0.0 সংস্করণে কাজ করে যা চ্যালেঞ্জের চেয়ে আগের।

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

FT        % array [0 1]
in        % take input and push its length
Z^        % Cartesian power. This gives all possible vote patterns, each on a row
t         % duplicate (will be indexed into at the end to produce the result)
G         % push input again
+         % element-wise addition with broadcast
!         % transpose
ts/       % duplicate. Divide each column by its sum
tYl       % duplicatte. Take natural logarithm
*         % element-wise multiplication
s         % sum of each column. Gives minus entropy produce by each vote pattern
4#X<      % arg max
Y)        % index into original array of voting patterns. Implicitly display

উদাহরণ

এটি কীভাবে কাজ করে তার একটি উদাহরণ এখানে। ইনপুট করতে [3 2 2], সম্ভব ভোটিং প্যাটার্নের অ্যারে (দ্বারা উত্পাদিত Z^) হল

[ 0 0 0
  0 0 1
  0 1 0
  0 1 1
  1 0 0
  1 0 1
  1 1 0
  1 1 1 ]

যেখানে প্রতিটি সারি একটি নিদর্শন। এটি [3 2 0]ব্রডকাস্ট ( G+) এর সাথে আসলটিতে যুক্ত করা হয়েছে । তার মানে বারবার উল্লম্বভাবে [3 2 0]প্রতিলিপি করা হয় 8এবং তারপরে দিতে হবে উপাদান অনুসারে যুক্ত

[ 3 2 2
  3 2 3
  3 3 2
  3 3 3
  4 2 2
  4 2 3
  4 3 2
  4 3 3 ]

এটি স্থানান্তরিত হয় এবং প্রতিটি কলাম প্রতিটি যোগফল ( !ts/) দ্বারা বিভক্ত হয় :

[ 0.4286    0.3750    0.3750    0.3333    0.5000    0.4444    0.4444    0.4000
  0.2857    0.2500    0.3750    0.3333    0.2500    0.2222    0.3333    0.3000
  0.2857    0.3750    0.2500    0.3333    0.2500    0.3333    0.2222    0.3000 ]

এর লোগারিদম দ্বারা গুণিত করা এবং প্রতিটি কলামের সংমিশ্রণ ( tYl*s) বিয়োগটি এনট্রপি দেয়:

[ -1.0790   -1.0822   -1.0822   -1.0986   -1.0397   -1.0609   -1.0609   -1.0889 ]

বিয়োগের এনট্রপিটি ( ম 4#X<) এর মেট্রোমিন্ট ( ) দ্বারা করা হবে 4, যা চূড়ান্ত ফলাফলের সাথে মিলিত হয় ( Y)) ।[0 1 1]

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.