var QUESTION_ID=49876;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var o=0;o<s.length;++o){var l=jQuery("#language-template").html(),t=s[o];l=l.replace("{{LANGUAGE}}",t.lang).replace("{{NAME}}",t.user).replace("{{SIZE}}",t.size).replace("{{LINK}}",t.link),l=jQuery(l),jQuery("#languages").append(l)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*\s*([^,]+)/;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table></div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table></div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table><table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table>
A+
iA-
? Nie rozumiem, dlaczego je ignorujemy.+
Odpowiedzi:
Python 2,
727062 bajtówJest to anonimowa funkcja, która pobiera liczbę całkowitą i zwraca ocenę jako ciąg znaków.
(podziękowania dla @ MartinBüttner, @grc i @TheNumberOne za wskazówki)
źródło
"EDCB"[n/10-6]
->chr(75-n/10)
CJam,
34 3332 bajtyOK, próbowałem już wielu podejść i nie jestem w stanie uzyskać tego poniżej 33, więc oto wyjaśnienie:
AKTUALIZACJA : 1 bajt zapisany dzięki wskaźnikowi Dennisa
Wypróbuj online tutaj
źródło
s
zrobić?<
Character String -
popycha ciąg.Siatkówka, 43 + 15 = 58 bajtów
Retina to język wyrażeń regularnych stworzony przez Martina Büttnera, w którym nieparzyste pliki są wyrażeniami regularnymi do dopasowania, a pliki o liczbach parzystych są tym, co należy zastąpić. Każda linia to osobny plik, więc do każdego dodatkowego pliku dodałem 15 bajtów.
Wyjaśnienie
Zaczyna się od zrobienia czegokolwiek z 3 lub więcej cyframi A. Dodaje,
-
jeśli jest to dwucyfrowa liczba kończąca się na 0, 1 lub 2, a+
jeśli kończy się na 7, 8 lub 9. Liczby są następnie mapowane na ich ocena (np. liczba rozpoczynająca się od 9 otrzymuje B). Każda pozostała liczba jest automatycznieoznaczona literąF.Niestety,Aktualizacja: wersja 0.5.0 ma domyślnie wyłączone wyjście pośrednie, co pozwala mi zaoszczędzić kilka bajtów.;`
musi zostać dodana do wszystkich oprócz ostatniego wyrażenia regularnego, aby stłumić pośrednie wyjście.źródło
\d.*
dopasowuje i zastępuje cały ciąg znaków+
.C, 99 bajtów
Jestem tu nowy, mam nadzieję, że przestrzegam zasad.
Ta funkcja przyjmuje znak jako parametr i zwraca ocenę jako ciąg zakończony znakiem NULL.
Wyjaśnienie
Dodano białe znaki:
Zmienne globalne są automatycznie inicjowane na zero, więc b jest wypełnione zerami. Ponieważ dotykane są tylko pierwsze dwie postacie, musimy się martwić o wstawienie NULL wb [1], jeśli ocena ma tylko jedną postać. Ten NULL jest wstawiany na samym początku funkcji. Parametr n jest domyślnie int. Jeśli ocena jest mniejsza niż 60, to jest ustawiona na „F”, jeśli jest większa niż 99, jest ustawiona na „A”. W innych przypadkach ocena bazowa jest podana przez
'E' - (n - 60) / 10
, co upraszcza75 - n / 10
.n % 10
pobiera cyfrę jednostki znaku. Jeśli jest mniejsza niż 3, to dołącza się a -, jeśli jest większa niż 6, dodaje się a +, w przeciwnym razie b [1] jest zerowane (co już było).Przypadki testowe
źródło
Pyth, 33 bajty
Wypróbuj online: pakiet demonstracyjny lub testowy
Wyjaśnienie:
źródło
> <> (Ryba),
7871 bajtówMetoda:
x,y,z
z wejścia. Jeśli znak nie jest obecny, wartość jego zmiennej będzie-1
niejawna. (ord(c)
zaznaczy punkt kodowy znakuc
)z > 0
(3 cyfry) wydrukujA
i wyjdź.x < ord('6') or y < 0
(wprowadź <60) wydrukujF
i wyjdź.123 - x
.y < ord('4') print
-` i wyjdź.y > ord('6') print
+ `i wyjdź.źródło
C,
6765Zaskakujące jest to dość zbliżone do rozwiązania python.
Aby jednak ten program doszedł do tak krótkiego czasu, trzeba było poświęcić:
Jeśli drukowany jest an
F
lub an, nawet nie patrzy na pozostałe przekazane argumenty. To dość paskudny hack.A
printf
Jeśli
(i%10+1)/4
wartość jest równa1
(nie+
lub-
powinna być dołączona do oceny),%s
formatyzator otrzymuje wskaźnik do\0
bajtu, więc nic nie jest drukowane. Również dość zabawne, ponieważ nie wiedziałem, że możesz wziąć adres zindeksowanego łańcucha literału. (np.&"string"[i]
) ( edycja :"string"+i
jest jeszcze krótsza ! Dzięki @nutki)Tutaj wynik programu dla liczb od 57 do 102. Zrobiłem go jako zrzut heksadecymalny, więc możemy być pewni, że nie
\0
zostały wydrukowane żadne dziwne bajty.Zastosowana
main
metoda:źródło
&"string"[i]
jest niepotrzebny, ponieważ odpowiada krótszemu,"string"+i
dzięki któremu można zapisać 2 bajty.CJam,
41393734 bajtówTo zdecydowanie za długo, ale nie sądzę, żebym teraz grał w golfa.
Sprawdź to tutaj. Lub uruchom tutaj wszystkie przypadki testowe.
Trzy bajty zapisane przez Optymalizator.
Wyjaśnienie
(Nieco przestarzałe)
źródło
GNU sed, 73 + 1 = 74 bajty
+ 1 dotyczy parametru -r.
źródło
Python 2,
94888469 bajtówźródło
JavaScript (ES6), 66 bajtów
Prosto.
źródło
R,
10710599 bajtówObawiam się, że to niezbyt dobry wysiłek, ale spróbuję zagrać w golfa później.
Edytuj Upuściłem kilka
if
s. Naprawiono skrzynkę i nieprawidłowy wynik dla 100.Teraz pozbyć się. Pozbyłem sięifelse
sifelse
s.źródło
LETTERS
raczej chceszletters
.Perl,
6662 bajtówTo może być bardziej golfa. Również inny sposób może być lepszy.
+1 dla
-p
Biegnij z:
źródło
-p
i upuścićsay
?JavaScript (ES6),
7879 bajtówTo naprawdę nie jest najmądrzejsza opcja, ale zrobiłem, co mogłem.
Po prostu zdaj ocenę jako ciąg , a ona zwróci jej literę oceny.
Część smyczkowa jest bardzo ważna jest .
Możesz sprawdzić walizkę testową tutaj:
Jeśli dodatkowe miejsce po literze nie jest dozwolone, chętnie go usunę.Nie było! To zwiększyło mój kod o 1 bajt, ale nic (zbyt) poważnego.źródło
One newline after output is fine, but keep it consistent.
”. Myślę, że to wystarczająco spójne.C #,
14312711288 bajtówPróbowałem być sprytny, modyfikując liczby ASCII, ale wygląda na to, że nie byłem sam!
Dzięki Timowi za porady na temat list zamiast ifs.
Dzięki DarcyThomas za wskazanie, że mogłem użyć zagnieżdżonych operatorów trójskładnikowych.
źródło
[item1,item2][condition]
. Jeśli warunek jest spełniony, to daje 2-szy przedmiot, a Fałsz pierwszy.return <condition> ? <true result> : <false result>
Uwaga: można je także zagnieżdżaćreturn <condition> ? <true result> : <condition> ? <2nd true result> : < 2nd false result>
Haskell, 78 bajtów
Pierwszy wiersz wydaje się marnotrawny, kosztuje 14 bajtów, ale bez niego nie mogłem znaleźć krótszej wersji.
Wyjaśnienie
Operator
#
jest skrótem do tworzenia n kopii drugiego argumentu. Listaa
jest nieskończoną listą ciągów „A”. Funkcjaf
indeksuje do listy wszystkich ocen dla n = 0,1, ... Zrozumienie listy buduje „środkową część” tej listy (oceny od E do B);g
jest pojedynczym Char, który jest dołączony do ciągus
(który może być pusty).Stosowanie
źródło
C, 102 bajty
}
Stosowanie
źródło
dc, 52
Wydajność
źródło
TI-Basic,
797476 bajtówźródło
1+
TI-BASIC,
696866 bajtówTI-BASIC nie jest dobry do manipulacji ciągami.
Wprowadź dane na ekranie głównym kalkulatora w postaci [liczba]: [nazwa programu].
Sformatowany:
Prawdopodobnie można to jeszcze pograć w golfa.
źródło
C #, 82 bajty
Oto skrzypce z niektórymi przypadkami testowymi.
źródło
JavaScript (ES6),
8683 bajtówTo, co naprawdę zjada postacie, to
String.fromCharCode
warunek +/- ... Podejrzewam, że istnieje sprytny sposób na skrócenie co najmniej jednego z nich.źródło
~~(.1*-n+75.9)
->75.9-n/10|0
PHP 5.5, 73 bajty
Jeszcze raz nie najkrótszy.
Ale to działa!
Sklasyfikowałem go pod PHP5.5, a nie tylko PHP, ponieważ korzysta ze składni, która jest poprawna tylko dla PHP5.5 i PHP5.6.
O wykreślaniu łańcuchów i tablic można przeczytać w instrukcji:
http://php.net/manual/en/migration55.new-features.php
źródło
Perl, 52
źródło
Ruby, 58 bajtów
Nie mogłem uwierzyć, że nie ma tu rubinów. Po zastanowieniu jest dość podobny do niektórych, które już tu są, ale i tak:
Wypróbuj tutaj
źródło
Excel, 100 bajtów
źródło