Règles
Aucune référence de plage de cellules (
A2:B3
).Maximum 9 lignes et 9 colonnes.
Aucune référence circulaire ou erreur de formule.
Les cellules vides sont évaluées
0
.Les données sont uniquement des nombres, mais peuvent être considérées comme des chaînes.
Les formules sont des chaînes.
Choix d'implémentation
Vous devez indiquer vos choix dans ces domaines:
Exiger que les formules soient préfixées par un caractère unique, par exemple
=
- ou non.La cellule la plus à gauche de la deuxième ligne est
A2
ouR2C1
, selon les deux conventions utilisées par Excel et al.Exiger tout préfixe ou suffixe à caractère unique dans les références de cellule, par exemple
$
- ou non.Une chaîne vide, vide, liste vide, etc., (mais pas
0
) pour représenter des cellules vides.Langue de votre soumission (les gestionnaires de feuilles de calcul ne sont pas autorisés).
Langue des formules (peut différer de la précédente). *
Points brownie ou cookies pour expliquer votre solution.
Exemples
Choix: 7 =
:; 8 A2
:; 9: aucun; 10 ""
:; 12: langage de formule Excel
Dans:
[[ 2, 3],
["=A1+B1",""]]
En dehors:
[[2,3],
[5,0]]
Dans:
[[ 2,"=A1+B2"],
["=A1+B1", ""]]
En dehors:
[[2,2],
[4,0]]
Dans:
[[ 3, 4,"=A1*B1"],
[ 2, 5,"=A2*B2"],
["","","=C1+C2"]]
En dehors:
[[3,4,12],
[2,5,10],
[0,0,22]]
Dans:
[["","=2*B2*B3" ,""],
[ 3,"=A1+(A2+C2)/2", 2],
[ 1,"=C1+(A3+C3)/2", 5]]
En dehors:
[[0,15, 0],
[3, 2.5,2],
[1, 3 ,5]]
* Le langage de la formule doit être PPCG admissible , mais il vous suffit de prendre en charge les références de cellule plus les critères 3 et 4, wiz. l'addition et la détermination de la primauté.
Expand array to cells, evaluate.
R0C0
,?Réponses:
JavaScript,
125112105 octetsPour l'utiliser, ajoutez
f=
au début et invoquez likef(argument)
.Les choix:
=
.A2
.""
(Chaîne vide) pour indiquer une cellule vide.Explication:
Cette solution parcourt toutes les cellules de la feuille de calcul (chaque élément des sous-tableaux du tableau donné) et si une chaîne non vide est trouvée, remplace ses références de cellule par les références correspondantes en termes du tableau donné et évalue l'expression avec
eval()
(ouais, cette mauvaise chose qui vous hante dans vos cauchemars ). Cette solution suppose que les constantes fournies dans le tableau d'entrée sont de type entier.Cas de test
la source
/\w\d/g
pour votre expression régulière?\w
correspond également aux chiffres et\d
correspond également à 0, les deux choses que vous ne voulez pas dans ce cas./[A-I][1-9]/g
devrait fonctionner si/\w\d/g
produit exactement les mêmes résultats dans les cas de test. L'utilisation d'un littéral de modèle dans la partie eval pourrait également économiser une poignée d'octets.PHP,
265 263 259 258 257 240 224 222 222 213 202196 octetsavec
array_walk_recursive
une fonction anonyme récursive etpreg_replace_callback
:ou
fonctionne en entrée: appel par référence. Testez-le en ligne .
R2C1
, pas de préfixepanne (première version)
la source
max(range(A1,A3))
pourrait être déroutant. : D$d=$c;preg_match($x="#[A-Z](.)#",$c=$c[0]
pourpreg_match($x="#[A-Z](.)#",$c=($d=$c)[0]
économiser 1 octet.Mathematica,
11911595 octetsLes choix:
R2C1
style.""
pour les cellules vides.RxCy
et n'ont pas d'effets secondaires devraient fonctionner.Explication
Nous commençons par remplacer toutes les chaînes vides dans l'entrée (
#
) par des zéros et en stockant le résultatm
, car nous en aurons besoin à un autre endroit.Remplacez à plusieurs reprises toute chaîne restante
s
par ce qui suit ...Faites correspondre les séquences de la forme
RxCy
ens
les remplacer par ...Ce qui donne
m[[x,y]]
, qui utilisex
ety
comme indices dans la matricem
.Finallz, évaluez cette chaîne comme une expression Mathematica.
la source
Clojure,
263281 octetsOh putain sans ça
apply map vector
le résultat est en transposition, commeA2
avant alphabétiquementB1
.Exemples:
A2
(+ A1 A2)
ça vanil
etfalse
fonctionnent comme des cellules vides, mais la chaîne vide neUn exemple de première macro de thread:
La valeur de départ de
C
dans la boucle est une carte de hachage, les clés sont des noms de cellule et les valeurs sont des valeurs d'origine. Ensuite, toutes les références de cellules sont remplacées par le contenu des cellules référencées jusqu'à ce que nous ayons convergé (P
revious = urrentC
), puis les cellules sont évaluées et la structure plate est partitionnée à nouveau dans une liste imbriquée.Ce serait cool de trouver une solution où
A1
,A2
etc. sont en fait des fonctions appelables, puis(* 2 B2 B3)
pourraient être réécrites(* 2 (B2) (B3))
et exécutées.Essayez-le en ligne!
la source
APL (Dyalog) , 51 octets
Aucun
A2
Aucun
Chaîne vide
APL
APL
Essayez-le en ligne!
⍎¨
Évaluez chaque cellule du résultat de(
… L')⍣≡
application continue des deux fonctions suivantes jusqu'à ce que plus rien ne change{
première fonction anonyme à appliquer…0
en cas d'::
erreur:⍵
renvoyer l'argument non modifié⋄
Essayez maintenant;⍵
si le≢
décompte de l'argument :×
est positif:
alors:⍕
stringify⍎
l' argument⍕
stringified évalué⍵
⋄
autre;0
retourner zéro}¨
… À chaque cellule{
deuxième fonction anonyme à appliquer…'←',¨
ajouter une flèche d'affectation à chaque cellule de⍵
l'argument(
…),¨
Ajoutez le texte suivant à chaque cellule de cette1↓
supprimer le premier de⎕D
la chaîne de tous les chiffres D (c'est-à-dire zéro)⎕A
Avec toutes les lettres de l' A lphabet aller vers le bas,∘.,
faire une table de concaténation (avec les chiffres restants vont à droite)⍉
transposer (pour diminuer les nombres, faire avancer les lettres à droite)(
…)↑
Prenez la sous-matrice supérieure gauche de la taille de…⍴
la taille de⍵
l'argument}
… Au résultat de la fonction précédente.la source
Python 2
273 265 265, 259 octetsEssayez-le en ligne!
Les choix:
=
A2
aucun
""
Python 2.7
Expressions Python
Explication de base:
Pour chaque formule de la sous-liste, remplacez-la par la liste correspondante (c'est-à-dire pour B1 s [0] [1]) et évaluez le résultat!
la source
s=[[ 3, 4,"max(A1,B1)"],[ 2, 5,"A2**B2"],[ "", "","C1+C2"]]
[[ 3, 4,"=max(A1,B1)"],[ 2, 5,"=A2**B2"],[ "", "","=C1+C2"]]
Cela fait partie des en-têtes! Vérifiez-le sur le lien Essayez-le en ligne!