तत्काल अपवाह चुनाव का अनुकरण करें


15

यह चुनाव है! जिस क्षेत्र में हम मतदान कर रहे हैं उसे तुरंत अपवाह (कभी-कभी वैकल्पिक वोट या अधिमान्य मतदान ) कहा जाता है । प्रत्येक मतदाता प्रत्येक उम्मीदवार को सबसे पसंदीदा से कम से कम पसंद करने का आदेश देता है, अपने सबसे पसंदीदा उम्मीदवार के लिए "1", अपने दूसरे उम्मीदवार के लिए "2" और प्रत्येक उम्मीदवार के नंबर होने तक आगे। मैं इस दोस्ताना कोअला को बाकी लोगों को समझाने देता हूँ:

अधिमान्य मतदान

( पैट्रिक अलेक्जेंडर द्वारा मूल से संशोधित छवि , CC BY-NC-SA 3.0 AU लाइसेंस के तहत उपयोग की गई )।

यदि आप पाठ रूप में अपनी त्वरित अपवाह व्याख्या पसंद करते हैं, तो विकिपीडिया लेख भी है ।

(नोट: यह भी संभव है, हालांकि, कम से कम मतों के साथ दो या अधिक उम्मीदवार होने की संभावना नहीं है। इन स्थितियों में, उनमें से एक को समान संभावनाओं पर यादृच्छिक रूप से चुनें और उन्हें समाप्त करें।)

इस चुनौती में, इनपुट की पहली पंक्ति तार की एक सूची है, जो चुनाव के उम्मीदवारों के नाम हैं। इन उदाहरणों में मैंने पाइप सीमांकित मानों का उपयोग किया है, हालांकि अपनी भाषा के अनुरूप इनपुट प्रारूप को समायोजित करने के लिए स्वतंत्र महसूस करें।

The Omitted Anti-neutrino|Placazoa|Alexander the Awesome|Tau Not Two|Semolina Sorcerer

इसके बाद nइनपुट की लाइनें हैं जो स्ट्रिंग्स की सूची भी हैं, जिनमें से प्रत्येक एक वोट का प्रतिनिधित्व करता है। पहली प्रविष्टि दर्शाती है कि वोट # 1 वरीयता, अगले # 2 वरीयता, आदि। उदाहरण के लिए:

Alexander the Awesome|Semolina Sorcerer|Tau Not Two|Placazoa|The Omitted Anti-neutrino

इसका मतलब यह होगा कि उस विशेष वोट में अलेक्जेंडर की पहली पसंद के रूप में, दूसरे के रूप में सेमोलीना सॉसरर, उनके तीसरे के रूप में ताऊ नॉट टू, आदि हैं। आप मान सकते हैं कि हर वोट में हर उम्मीदवार शामिल होगा, और कोई खाली या अधूरा वोट नहीं होगा।

वोटों को इनपुट के रूप में देखते हुए, आपके कार्यक्रम या फ़ंक्शन को चुनाव के विजेता का उत्पादन करना चाहिए। आप यहां पायथन 3 में एक अनऑर्गलाइज्ड संदर्भ कार्यान्वयन पा सकते हैं ।

उदाहरण इनपुट और आउटपुट

इनपुट

Dionysius|Portal Butter|Alexander the Awesome|Red Trainmen
Portal Butter|Alexander the Awesome|Dionysius|Red Trainmen
Dionysius|Portal Butter|Alexander the Awesome|Red Trainmen
Portal Butter|Red Trainmen|Alexander the Awesome|Dionysius
Dionysius|Portal Butter|Alexander the Awesome|Red Trainmen
Alexander the Awesome|Red Trainmen|Portal Butter|Dionysius
Red Trainmen|Alexander the Awesome|Dionysius|Portal Butter
Dionysius|Portal Butter|Alexander the Awesome|Red Trainmen
Red Trainmen|Dionysius|Portal Butter|Alexander the Awesome
Alexander the Awesome|Dionysius|Red Trainmen|Portal Butter
Dionysius|Portal Butter|Alexander the Awesome|Red Trainmen
Alexander the Awesome|Red Trainmen|Dionysius|Portal Butter

उत्पादन

Alexander the Awesome

इनपुट

Depressed Billy|Sighted Citrus|Frosty Fox|Electronic Accident
Frosty Fox|Sighted Citrus|Electronic Accident|Depressed Billy
Frosty Fox|Depressed Billy|Sighted Citrus|Electronic Accident
Depressed Billy|Electronic Accident|Sighted Citrus|Frosty Fox
Depressed Billy|Sighted Citrus|Electronic Accident|Frosty Fox
Depressed Billy|Electronic Accident|Sighted Citrus|Frosty Fox
Electronic Accident|Frosty Fox|Depressed Billy|Sighted Citrus
Sighted Citrus|Frosty Fox|Electronic Accident|Depressed Billy
Frosty Fox|Depressed Billy|Sighted Citrus|Electronic Accident
Sighted Citrus|Electronic Accident|Frosty Fox|Depressed Billy
Frosty Fox|Electronic Accident|Depressed Billy|Sighted Citrus
Sighted Citrus|Frosty Fox|Depressed Billy|Electronic Accident

उत्पादन

Sighted Citrusया Frosty Fox(बेतरतीब ढंग से)

इनपुट

आप अंतिम इनपुट सेट यहां प्राप्त कर सकते हैं । यह हाल के ऑस्ट्रेलियाई चुनाव के मतदान क्षेत्रों में से एक है, और इसमें 63 428 वोट शामिल हैं।

उत्पादन

Ross HART

1
क्या हमें पहली पंक्ति लेनी है, या क्या हम इसे बाकी इनपुट से समझ सकते हैं?
माल्टसेन

@ मैलेटसेन आप चाहें तो पहली पंक्ति को छोड़ सकते हैं, हालाँकि कृपया इसे अपने सबमिशन में नोट कर लें।
अनुपस्थित

1
@ पाबिसे - ऑस्ट्रेलियाई वोटिंग सेट अब नहीं है, क्या आपके पास इसकी कहीं प्रति है?
Pixma140

जवाबों:


3

पायथ - 30 बाइट्स

इसे रिफलेक्टर करेगा। बाकी इनपुट से Infers पहली लाइन।

WgclQ2leKlD.gkhMQ=Q-RhhJKQ;hhJ

टेस्ट सूट


1

आर , 101 99 बाइट्स

f=function(m)`if`(n<-dim(m)-1,f(matrix(m[m!=names(t<-sample(table(m[1,])))[which.min(t)]],n)),m[1])

इसे ऑनलाइन आज़माएं!

एक मैट्रिक्स के रूप में इनपुट लेता है, प्रत्येक कॉलम में एक मतदाता की पसंद का प्रतिनिधित्व करता है। पुनरावृत्ति द्वारा काम करता है: न्यूनतम संख्या वाले वोटों के साथ एक उम्मीदवार ढूंढें, मैट्रिक्स में सभी संबंधित प्रविष्टियों को हटाएं, मैट्रिक्स को पुन: स्वरूपित करें और तब तक पुनरावृत्ति करें जब तक मैट्रिक्स में केवल 1 पंक्ति न हो।

प्रत्येक पुनरावृत्ति के मतों की गणना tableशीर्ष पंक्ति के मानों के साथ गणना करके की जाती है , जो प्रत्येक मतदाता के वर्तमान शीर्ष विकल्प हैं। यह sampleयादृच्छिक पर संबंधों को तोड़ने के लिए फेरबदल किया जाता है।

n<-dim(m)-1लंबाई 2 का वेक्टर देता है, लेकिन केवल पहले मूल्य का उपयोग किया जाता है (इसलिए यह समकक्ष है, लेकिन 1 बाइट से छोटा है n<-nrow(m)-1)। यह मान दो बार उपयोग किया जाता है: पहले यह जाँचने के लिए 0 से तुलना की जाती है कि क्या अंतिम पुनरावृत्ति पहुँच गई है; दूसरा, अगर हम पुनरावृत्ति करते हैं, तो यह नई मैट्रिक्स की पंक्तियों की संख्या है।


0

पायथन 2 , 209 बाइट्स

def f(s):
 d={}
 for v in s:
	k=v[0];d[k]=d.get(k,[])+[v]
	if len(d[k])>len(s)/2:return k
 D=d.values()
 for v in choice([g for g in D if len(g)==len(min(D,key=len))]):v.pop(0)
 return f(s)
from random import*

इसे ऑनलाइन आज़माएं!

मतदाताओं की सूची की सूची के रूप में इनपुट लेता है (हेडर पंक्ति शामिल नहीं है)। एक टाई के मामले में यादृच्छिकता घबराहट है!



0

पायथन 2 , 200 बाइट्स

def f(s):
 d={}
 for v in s:
    k=v[0];d[k]=d.get(k,[])+[v]
    if len(d[k])>len(s)/2:return k
 D=d.values()
 x=[g for g in D if len(g)==len(min(D,key=len))]
 for v in x[id(x)%len(x)]:v.pop(0)
 return f(s)

इसे ऑनलाइन आज़माएं!

सरणी के ऑब्जेक्ट आईडी को 'यादृच्छिकता' के स्रोत के रूप में उपयोग करता है। चास ब्राउन के जवाब के
आधार पर - मेरे पास टिप्पणी करने के लिए पर्याप्त प्रतिनिधि नहीं है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.