90% scheitern an dieser Herausforderung?


8

Ich glaube, ich bin nicht der einzige, der diese Art von Bild auf Facebook (und anderen Websites) gesehen hat.

Löse es!!!!

Das Bild oben wurde vor 16 Tagen gepostet und hat 51.000 Kommentare gesammelt. Einige Antworten: 0, 4, 8, 48, 88, 120, 124 und so weiter.

Herausforderung:

Die Mathematik in der Frage macht keinen Sinn 1 , daher können wir die richtige Antwort nicht finden, wenn wir uns die Gleichung ansehen (oder wie auch immer Sie dieses Durcheinander von Zahlen und Operatoren nennen würden). Es gibt jedoch eine sehr große Anzahl von Menschen, die geantwortet haben, und 10% dieser Menschen haben Recht!

Finden wir die richtige Antwort!


Nehmen Sie einen ganzzahligen Dezimalwert in Prozent 0-1 oder einen Bruchteil, der Nangibt, wie viele Prozent der Testgruppe die Frage nicht bestanden haben (oder optional wie viele richtig geantwortet haben), und eine Liste mit Zahlen, die die Antworten darstellen, die von Personen gepostet wurden.

Suchen Sie die Zahl, auf die 100-NProzent der Testgruppe geantwortet haben, und geben Sie sie aus. Wenn es mehr als eine Antwort gibt, die diesem Kriterium entspricht, müssen Sie alle ausgeben. Wenn es keine Antworten gibt, die in 100-NProzent der Zeit dargestellt werden, müssen Sie die Nummer ausgeben, die am nächsten liegt (gemessen an der Anzahl der Antworten von 100-N).

Um die Eingaberegeln für machen Nklar: Wenn 90% ausfällt, dann Sie eingeben kann 90, 10, 0.9oder 0.1. Sie müssen angeben, welche Sie auswählen. Sie können davon ausgehen, dass die Prozentzahlen Ganzzahlen sind.


Testfälle:

In den folgenden Testfällen Nist der Prozentsatz angegeben, der den Test nicht bestanden hat. Sie können die Eingabe mit einer der zulässigen Eingabemethoden vornehmen.

N:  90   (meaning 90 % will fail and 10 % answer correctly)
List: 3 1 5 6 2 1 3 3 2 6
Output: 5   (because 90 % of the answers weren't 5)
---
N:  50   (50 % will answer correctly)
List: 3 6 1 6
Output: 6   (because 50 % of the answers weren't 6)
---
N:  69   (31 % will answer correctly)
List: 1 9 4 2 1 9 4 3 5 1 2 5 2 4 4 5 2 1 6 4 4 3
Output: 4    (because 31% of 22 is 6.82. There are 6 fours, which is the 
              closest to 6.82)
---
N = 10   (90 % will answer correctly)
List: 1 2 3 4 5 6 7 8 9 10
Output: 1 2 3 4 5 6 7 8 9 10 (because 9/10 will answer correctly. All numbers
                              have been answered the same number of times, thus
                              all are equally likely to be correct.
---
N:  90
List: 1 1 1
Output: 1

1 Bitte streiten Sie sich hier nicht mit mir. Wenn Sie die Antwort "kennen" , schließen Sie sich den anderen 10% an und posten Sie sie auf Facebook!



Was ist die maximale Anzahl von Elementen in der Liste, falls vorhanden?
Kevin Cruijssen

1
@ KevinCruijssen Sie dürfen keinen Maximalwert annehmen. Das Maximum wird durch den Speicher / Datentyp bestimmt. Die Herausforderung basiert auf einem Beitrag mit 51.000 Kommentaren, daher sollte er vorzugsweise mindestens so viele Elemente abdecken.
Stewie Griffin

1
Was sollen wir tun, wenn mehr als eine Antwort wie im Beispiel gleich nah ist [1,3,3,3], 0.5? Müssen wir in diesem Fall beide ausgeben?
Emigna

@ Emigna ja, beides ausgeben. Siehe den 4. Testfall.
Stewie Griffin

Antworten:


6

MATL , 16 14 Bytes

-1 Byte dank @Giuseppe

-1 Byte dank @LuisMendo

SY'ts/i-|tX<=)

Erläuterung:

        % implicit input
S       % sort
Y'      % run-length encoding
ts      % duplicate elements and sum (get number of elements)
/       % array right division (get array of probability for each answer)
i-|     % get absolute difference with second input
tX<     % duplicate and get minimum value
=)      % get each answer that match with the minimum value
        % (implicit) convert to string and display

Probieren Sie es online aus! oder überprüfen Sie alle Testfälle


4

R , 65 Bytes

function(N,A,x=table(A))names(x)[!(y=(abs(1-x/sum(x)-N)))-min(y)]

Probieren Sie es online aus!

Nimmt Nals Zahl zwischen 0und 1und Aals Vektor (manchmal aus STDIN in der TIO-Verknüpfung entnommen, damit ich sie nicht in R-Vektoren umwandeln muss). Gibt eine Liste von Zeichenfolgen zurück, die vom OP zugelassen werden .

function(N,A){
 x <- table(A)               # count occurrences of each value in A
 pct <- 1 - x/sum(x)         # compute percentages different from each value
 y <- abs(pct - N)           # find distances from N
 idx <- y!=min(y)            # find the indices of the minimum/minima
 names(x)[idx]               # return the names of the table (strings)
}


1

JavaScript (ES7), 103 99 Byte

Nimmt die Eingabe als (a, r)wo eine ist die Liste der Antworten und r ist die erwartete Erfolgsquote in [0 ... 1] . Gibt a zurück Set.

(a,r,m)=>a.map(n=>(d=a.reduce((p,c)=>p-=c==n,r*a.length)**2)>m||(d==m?s:(m=d,s=new Set)).add(n))&&s

Testfälle



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.