Definiujemy białe znaki jako dowolny z trzech znaków, tabulacji (0x09), nowej linii (0x0A) lub spacji (0x20).
W tym wyzwaniu musisz napisać dwa programy lub funkcje w tym samym języku programowania, które wykonują następujące zadania:
Policz znaki białych znaków w danym ciągu. Na przykład dane wejściowe
123 -_- abc def
zwróci 7 (pod warunkiem, że nie ma końcowego nowego wiersza).
Podziel dany ciąg przy kolejnych biegach białych znaków. Jeśli ciąg zaczyna się lub kończy spacją, na końcu nie należy zwracać pustych ciągów. Na przykład to samo wejście
123 -_- abc def
wróciłby
["123", "-_-", "abc", "def"]
.
W obu przypadkach możesz pobrać dane wejściowe za pośrednictwem STDIN, argumentu wiersza poleceń lub argumentu funkcji i zwrócić wynik lub wydrukować go STDOUT. W przypadku drugiego programu, jeśli zdecydujesz się na drukowanie do STDOUT, wydrukuj każdy ciąg w osobnym wierszu, bez otaczających go cudzysłowów.
W przypadku obu programów można założyć, że dane wejściowe zawierają tylko drukowalne ASCII (0x20 do 0x7E) i białe znaki.
Teraz jest haczyk:
- Jeśli wszystkie białe znaki zostaną usunięte z obu programów / funkcji, powstałe ciągi muszą być identyczne. Oznacza to, że Twoje dwa zgłoszenia mogą różnić się jedynie liczbą i rozmieszczeniem białych znaków.
- Żaden program / funkcja nie może zawierać literałów łańcuchowych ani wyrażeń regularnych (literały znakowe są w porządku, pod warunkiem, że Twój język ma określony typ znaków).
- Żaden program / funkcja nie może zawierać żadnych komentarzy.
- Nie wolno czytać kodu źródłowego programu, bezpośrednio lub pośrednio.
To jest kod golfowy. Twój wynik to suma rozmiarów obu rozwiązań (w bajtach). Najniższy wynik wygrywa.
Liderów
Poniższy fragment kodu generuje zarówno zwykłą tabelę wyników, jak i przegląd zwycięzców według języka. Więc nawet jeśli wybrany język nie pozwala ci wygrać całego wyzwania, dlaczego nie spróbować zająć miejsca na drugiej liście? Byłbym bardzo zainteresowany, aby zobaczyć, jak ludzie radzą sobie z tym wyzwaniem w różnych językach!
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, N bytes
gdzie N
jest całkowity rozmiar Twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Możesz także uwzględnić indywidualne liczby przed całkowitą liczbą, np
# Python 2, 35 + 41 = 76 bytes
Ostatni numer, który nie zostanie przekreślony, zostanie użyty przez fragment kodu.
<script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script><script>site = 'meta.codegolf',postID = 5314,isAnswer = true,QUESTION_ID = 42253;jQuery(function(){var u='https://api.stackexchange.com/2.2/';if(isAnswer)u+='answers/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJeRCD';else u+='questions/'+postID+'?order=asc&sort=creation&site='+site+'&filter=!GeEyUcJFJO6t)';jQuery.get(u,function(b){function d(s){return jQuery('<textarea>').html(s).text()};function r(l){return new RegExp('<pre class="snippet-code-'+l+'\\b[^>]*><code>([\\s\\S]*?)<\\/code><\/pre>')};b=b.items[0].body;var j=r('js').exec(b),c=r('css').exec(b),h=r('html').exec(b);if(c!==null)jQuery('head').append(jQuery('<style>').text(d(c[1])));if (h!==null)jQuery('body').append(d(h[1]));if(j!==null)jQuery('body').append(jQuery('<script>').text(d(j[1])))})})</script>