Napisz kod, aby ustalić akceptowaną odpowiedź

14

Opublikuj odpowiedź na to pytanie, która ocenia każdą odpowiedź na to pytanie i określa, czy wygrywa.

Kto wygrywa:

  • Zwycięzca to odpowiedź, która wygrywa według większości odpowiedzi o 1700 UTC, niedziela, 2 marca.
  • Zachęcamy do zmiany własnej odpowiedzi w miarę postępu konkursu. Proszę nie zmieniać innych ”.
  • Więzy są określane przez najkrótszy kod.
  • Niezależnie od tego, ile normalnie możesz zrobić, jeśli coś jest podejrzane, zdyskwalifikuję cię.
  • Nie zaakceptuję własnej odpowiedzi, ale wykorzystam ją do oceny twojej.

Zasady:

  • Twoje obliczenia muszą zawierać wynik liczbowy dla dowolnej arbitralnej odpowiedzi (aby ułatwić, dane wejściowe do twojego algorytmu są albo id odpowiedzi, albo markdown odpowiedzi na stronie).
  • Twój wynik musi mieć co najmniej jednego zwycięzcę i musi być możliwe, aby odpowiedź oprócz twojej wygrała.
  • Twój algorytm nie może użyć czegoś bardzo specyficznego dla twojej odpowiedzi, w ogóle nie można użyć nazwy użytkownika ani znaczników czasu. Będę ostatecznym sędzią tego, co znaczy „bardzo konkretny”, ale zachęcam do działań policyjnych i publicznego zawstydzania.
  • Twój kod musi się kompilować, uruchamiać i dawać wynik pod każdą odpowiedzią.
  • Podaj link do sposobu wykonania kodu, jeśli nie jest wymieniony w Ideone . Patrz poniżej.

Języki ideone

Nie ten Charles
źródło
1
Czy jest jakiś szczególny powód ograniczenia „Proszę podać tylko jedną odpowiedź”? Jeśli opracuję dwa bardzo różne algorytmy z dwoma bardzo różnymi kryteriami, czy nie mogę opublikować obu?
Victor Stafusa,
@Victor Chyba masz rację. Mogę złagodzić tę zasadę, ale zamknę ludzi za układanie talii.
Nie, że Charles
Czy zwycięzca powinien poprawnie ustalić, że sam jest zwycięzcą? IE, jeśli odpowiedzi A, B i C mówią, że D jest zwycięzcą, ale D mówi, że A jest zwycięzcą, czy D jest zwycięzcą, nawet jeśli jest to zła odpowiedź?
Victor Stafusa
@Victor Zwycięzca nie musi być poprawny. To byłoby zbyt trudne.
Nie to, że Charles
Od kiedy Ideone zezwala na dostęp do sieci?
nyuszika7h

Odpowiedzi:

6

R, 1 znak

1

Jeśli chcesz, możesz podać identyfikator odpowiedzi jako argument wiersza poleceń. :) Link do ideone.

Dalsze opracowanie

Ponieważ nie jest praktyczne, aby odpowiedzi wykonywały inne odpowiedzi (różne języki itp.) I oceniały je na podstawie ich wyników, jedynym sposobem, w jaki mogę je ocenić, jest użycie pewnej metryki kodu.

Zauważyłem, że wszystkie dotychczasowe odpowiedzi dają wyższy wynik krótszym programom. Uważam, że jest to najkrótszy możliwy kod, więc powinien znaleźć się na wysokiej pozycji w wyniku innych odpowiedzi.

Jak i jaką odpowiedź daje mój kod, aby inne odpowiedzi były mniej trafne. Jedynym ważnym aspektem jest to, że inni oceniają moją odpowiedź wysoko.

Andris
źródło
Proszę opracować.
rahulroy9202
1
@ rahulroy9202 Zaktualizowałem odpowiedź z moim uzasadnieniem.
Andris
2
: D dobry punkt. Twoje założenia są logiczne. Chyba że ktoś wymyśli sposób na wydrukowanie 1 bez kodu. : D
rahulroy9202
@ rahulroy9202 Myślę, że nie jest możliwe opublikowanie pustego bloku kodu, więc nawet jeśli jest to możliwe w języku, nie można tutaj opublikować „kodu”. : D
Andris
spróbuj <code> </code> wewnątrz odpowiedzi, a mój kod będzie czytał jako odpowiedź 0 znaków. : D
rahulroy9202
3

R, 1 znak

0

W odpowiedzi na odpowiedź @ Andrisa istnieją teraz dwa kody, które mają jeden znak: Andris i mój. Ponieważ wiążemy się z innymi odpowiedziami, żadne z nas nie „wprost” wygrało, więc moja odpowiedź nie „wygra”. :-)

jvriesem
źródło
2

Ruby, 368 znaków

require 'json'
require 'open-uri'
v='body';w="#{v}_markdown";s='comments'
x=if(d=JSON.parse(open("http://api.stackexchange.com/2.2/answers/#{ARGV[0]}?site=codegolf&filter=!%29r%28UkmOhmCPjXru-TDty").read)['items'][0]).include?(s) then d[s].map{|c|c[w].length*[1,c[w].index('`')||1,c[w].index('\n')||1].max}.reduce(:+) else -2 end
puts d['score']*150+5*(d[v].match(/<(..).*?\1.*?\1/m))[0].ord+x-$~.end(0)

Powodzenia!

Nie ten Charles
źródło
2

JavaScript - 190 znaków

Założenie: pierwszy blok kodu jest odpowiedzią.

var ans=$('.answer'),s=999,sa;
for(i=0;i<ans.length;i++){
    var x =  ans[i].getElementsByTagName('code');   
    var z = x[0].innerHTML.replace(/\s/g,'').length;
    if(s>z){
        s=z;
        sa=ans[i];
        }    
}
console.log(sa);

Można przetestować w konsoli przeglądarki. Zakłada, że ​​najkrótsza odpowiedź jest poprawna.

Jak wykonać - W przeglądarce Chrome / Firefox otwórz konsolę na tej stronie i wklej kod i uruchom.

rahulroy9202
źródło
Działa również w konsoli IE 11 :)
ComFreek