Ce défi est un peu délicat, mais plutôt simple, étant donné une chaîne s
:
meta.codegolf.stackexchange.com
Utilisez la position du caractère dans la chaîne comme x
coordonnée et la valeur ascii comme y
coordonnée. Pour la chaîne ci-dessus, l'ensemble de coordonnées résultant serait:
0, 109
1, 101
2, 116
3, 97
4, 46
5, 99
6, 111
7, 100
8, 101
9, 103
10,111
11,108
12,102
13,46
14,115
15,116
16,97
17,99
18,107
19,101
20,120
21,99
22,104
23,97
24,110
25,103
26,101
27,46
28,99
29,111
30,109
Ensuite, vous devez calculer la pente et l'ordonnée à l'origine de l'ensemble que vous avez obtenu en utilisant la régression linéaire , voici l'ensemble ci-dessus tracé:
Ce qui donne une ligne de meilleur ajustement (indexée sur 0):
y = 0.014516129032258x + 99.266129032258
Voici la ligne la mieux ajustée indexée 1 :
y = 0.014516129032258x + 99.251612903226
Votre programme reviendrait donc:
f("meta.codegolf.stackexchange.com") = [0.014516129032258, 99.266129032258]
Ou (tout autre format raisonnable):
f("meta.codegolf.stackexchange.com") = "0.014516129032258x + 99.266129032258"
Ou (tout autre format raisonnable):
f("meta.codegolf.stackexchange.com") = "0.014516129032258\n99.266129032258"
Ou (tout autre format raisonnable):
f("meta.codegolf.stackexchange.com") = "0.014516129032258 99.266129032258"
Expliquez simplement pourquoi il revient dans ce format s'il n'est pas évident.
Quelques règles de clarification:
- Strings are 0-indexed or 1 indexed both are acceptable.
- Output may be on new lines, as a tuple, as an array or any other format.
- Precision of the output is arbitrary but should be enough to verify validity (min 5).
Il s'agit du nombre de victoires par nombre d'octets le plus bas du code-golf .
0.014516129032258x + 99.266129032258
?Réponses:
MATL , 8 octets
L'indexation de chaînes basée sur 1 est utilisée.
Essayez-le en ligne!
Explication
la source
Octave,
29262420 octetsEssayez-le en ligne!
Nous avons le modèle
Ici
y
la valeur ASCII de la chaînes
Pour trouver les paramètres d'interception et de pente, nous pouvons former l'équation suivante:
alors
!!s
convertit une chaîne en un vecteur de même longueur que la chaîne.Le vecteur des uns est utilisé pour l'estimation de l'ordonnée à l'origine.
1:nnz(s)
est une plage de valeurs de 1 au nombre d'éléments de la chaîne utilisée commex
.Réponse précédente
Pour tester, collez le code suivant dans Octave Online
Une fonction qui accepte une chaîne en entrée et applique une estimation des moindres carrés ordinaires du modèle
y = x*b + e
Le premier argument de ols est
y
que pour cela nous transposons la chaînes
et ajoutons avec le numéro 0 pour obtenir son code ASCII.la source
/
, bonne idée!TI-Basic, 51 (+ 141) octets
Les chaînes sont basées sur 1 dans TI-Basic.
Comme l'autre exemple, cela génère l'équation de la ligne la mieux ajustée, en termes de X. En outre, dans Str2, vous devez avoir cette chaîne, qui est de 141 octets dans TI-Basic:
La raison pour laquelle cela ne peut pas faire partie du programme est que deux caractères dans TI-Basic ne peuvent pas être automatiquement ajoutés à une chaîne. L'un est la
STO->
flèche, mais ce n'est pas un problème car il ne fait pas partie de l'ASCII. L'autre est la chaîne literal ("
), qui ne peut être stringifiée qu'en tapant dans uneY=
équation et en utilisantEqu>String(
.la source
"
en le demandant également comme entrée utilisateur dans un programme, ce qui ne vous aide pas ici, mais je voulais simplement souligner ce fait. 2, je ne reconnais pas certains de ces caractères comme existant sur la calculatrice. Je peux me tromper, mais par exemple, où obtenez-vous@
et~
? En plus#
,$
et&
.R,
4645 octetsLit l'entrée de stdin et pour les retours de cas de test donnés (un indexé):
la source
lm(utf8ToInt(y<-scan(,""))~1:nchar(y))$co
x
variable doit être prédéfinie pourlm
fonctionner.s
doncx=1:nchar(s);lm(charToRaw(s)~x)$co
sauve quelques octets. Je ne sais pas non plus si$co
c'est techniquement nécessaire, car vous obtenez toujours l'interception + le coefficient sans celaPython,
8280 octets-2 octets grâce à @Mego
En utilisant
scipy
:la source
f=
.numpy.linalg.lstsq
diffère apparemment des argumentsscipy.stats.linregress
et est plus complexe.Mathematica, 31 octets
Fonction sans nom prenant une chaîne en entrée et renvoyant l'équation réelle de la ligne la mieux adaptée en question. Par exemple,
f=Fit[ToCharacterCode@#,{1,x},x]&; f["meta.codegolf.stackexchange.com"]
renvoie99.2516 + 0.0145161 x
.ToCharacterCode
convertit une chaîne ASCII en une liste des valeurs ASCII correspondantes; en effet, il utilise par défaut l'UTF-8 plus généralement. (Un peu triste, dans ce contexte, qu'un nom de fonction comprend plus de 48% de la longueur du code ....) EtFit[...,{1,x},x]
est le intégré pour le calcul de la régression linéaire.la source
Node.js, 84 octets
En utilisant
regression
:Démo
la source
Sauge, 76 octets
Presque aucun golf, probablement plus long qu'une réponse Python au golf, mais oui ...
la source
J , 11 octets
Cela utilise une indexation à base unique.
Essayez-le en ligne!
Explication
la source
JavaScript,
151148 octetsPlus lisible:
Afficher l'extrait de code
la source
0
dec.charCodeAt(0)
, et 2 autres octets en déplaçant lek=...
groupe de virgules et en le plaçant directement dans le premier index du tableau renvoyé comme[k=...,(d-k*b)/a]
Javascript (ES6), 112 octets
la source
Haskell,
154142 octetsC'est beaucoup trop long à mon goût à cause des importations et des longs noms de fonction, mais bon. Je ne pouvais penser à aucune autre méthode de golf, bien que je ne sois pas expert dans le domaine des importations de golf.
Dépouillé de 12 octets par remplacement
ord
et importation deData.Char
by fromEnum grâce à nimi.la source
ord
avecfromEnum
et de se débarrasser deimport Data.Char
.SAS Macro Language, 180 octets
Utilise l'indexation basée sur 1. La solution devient assez verbeuse lorsque la sortie n'est que la pente et l'interception.
la source
Clojure, 160 octets
Pas de fonction intégrée, utilise l'algorithme itératif décrit dans l' article Perceptron . Peut ne pas converger vers d'autres entrées, dans ce cas, réduire le taux d'apprentissage
2e-4
et peut-être augmenter le nombre d'itérations1e5
. Je ne sais pas si l'algorithme non itératif aurait été plus court à implémenter.Exemple:
la source
Érable, 65 octets
Usage:
Résultats:
Remarques: Cela utilise la commande Ajuster pour ajuster un polynôme de la forme a * x + b aux données. Les valeurs ASCII de la chaîne sont trouvées en les convertissant en octets.
la source