Nous définissons les espaces comme étant l'un des trois caractères, tabulation (0x09), nouvelle ligne (0x0A) ou espace (0x20).
Pour ce défi, vous devez écrire deux programmes ou fonctions dans le même langage de programmation, qui effectuent les tâches suivantes:
Comptez les caractères d'espacement dans une chaîne donnée. Par exemple, l'entrée
123 -_- abc def
retournerait 7 (à condition qu'il n'y ait pas de nouvelle ligne).
Fractionner une chaîne donnée lors de passages consécutifs d'espaces. Si la chaîne commence ou se termine par un espace, aucune chaîne vide ne doit être renvoyée à la fin. Par exemple, la même entrée
123 -_- abc def
reviendrait
["123", "-_-", "abc", "def"]
.
Dans les deux cas, vous pouvez prendre une entrée via STDIN, un argument de ligne de commande ou une fonction, renvoyer le résultat ou l’afficher STDOUT. Pour le second programme, si vous choisissez d’imprimer sur STDOUT, veuillez imprimer chaque chaîne sur sa propre ligne, sans les guillemets.
Pour les deux programmes, vous pouvez supposer que l’entrée ne contient que des fichiers ASCII imprimables (0x20 à 0x7E) et des espaces.
Maintenant voici le piège:
- Si tous les espaces sont supprimés des deux programmes / fonctions, les chaînes résultantes doivent être identiques. En d'autres termes, vos deux soumissions peuvent uniquement différer par le nombre et l'emplacement des caractères d'espacement.
- Aucun programme / fonction ne peut contenir de chaîne ou de littéral de regex (les littéraux de caractères conviennent, à condition que votre langue ait un type de caractère désigné).
- Aucun programme / fonction ne peut contenir de commentaires.
- Vous ne devez pas lire le code source du programme, directement ou indirectement.
C'est du code golf. Votre score est la somme des tailles des deux solutions (en octets). Le score le plus bas gagne.
Classements
L'extrait de pile ci-dessous génère à la fois un classement régulier et un aperçu des gagnants par langue. Donc, même si votre langue de choix ne vous permet pas de remporter l’ensemble du défi, pourquoi ne pas tenter de vous tailler une place sur la deuxième liste? Je serais très intéressé de voir comment les gens abordent ce défi dans diverses langues!
Pour vous assurer que votre réponse apparaît, commencez votre réponse par un titre, en utilisant le modèle Markdown suivant:
# Language Name, N bytes
où N
est la taille totale de votre soumission. Si vous améliorez votre score, vous pouvez conserver les anciens scores en les effaçant. Par exemple:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Vous pouvez également inclure les comptes individuels avant le compte total, par exemple:
# Python 2, 35 + 41 = 76 bytes
Le dernier numéro qui n'est pas rayé sera utilisé par l'extrait de code.
<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>