J'ai créé un programme en utilisant dev-cpp et wxwidgets qui résout un puzzle.
L'utilisateur doit remplir les blocs d'opérations et les blocs de résultats, et le programme le résoudra. En le résolvant en utilisant bruteforce, je génère toutes les combinaisons de nombres de longueur non répétées en utilisant un algorithme récursif. Ça fait vite.
Jusqu'à ici tout est génial!
Mais le problème est quand mon programme fonctionne en fonction du caractère sur les blocs. C'est extrêmement lent (il n'obtient jamais la réponse), à cause de la comparaison des caractères contre +, -, *, etc. Je fais un CAS.
Existe-t-il un langage ou un langage de programmation permettant la création dynamique d'opérateurs? Donc, je peux définir l'opérateur ROW1COL2 comme un +, et de la même manière pour toutes les autres opérations.
Je laisse une capture d'écran de l'application, il est donc plus facile de comprendre comment fonctionne le puzzle.
http://www.imageshare.web.id/images/9gg5cev8vyokp8rhlot9.png
PD: Les travaux de l'algorithme, je tryed avec un casse-tête trivial, et résolu dans une seconde.Opérateurs créés dynamiquement
Répondre
Pas sûr que ce soit vraiment ce que vous cherchez, mais ..
Tout objet langage comme le C++ ou C# vous permettra de créer une classe de base « opérateur », puis tirer de cette classe de base d'une "PlusOperator" ou "MinusOperator" etc '. C'est la manière standard d'éviter de telles déclarations de cas.
Cependant, je ne suis pas sûr que cela va résoudre votre problème de performance. L'utilisation d'une force brutale pour un tel problème vous donnera une solution exponentielle. cela semblera fonctionner rapidement pour de petites entrées - dire compléter tous les nombres. Mais si vous voulez compléter les opérations c'est un problème beaucoup plus grand avec beaucoup plus de possibilités.
Il est donc probable que même sans le CAS votre programme ne sera pas en mesure de le résoudre.
La meilleure façon d'essayer de résoudre ce genre de problèmes est d'utiliser des méthodes de recherche avancées qui utilisent une fonction heuristique. Voir le A* (A-star) algorithm par exemple.
Bonne chance!
Vous pouvez représenter les nombres et les opérateurs en tant qu'objets, de sorte que l'analyse est effectuée une seule fois au début de la résolution.
- 1. Disposer des contrôles créés dynamiquement
- 2. gardes de portée créés Dynamiquement
- 3. Google App Engine - Modèles créés dynamiquement
- 4. champs dynamiquement créés Validation dans ASP.NET MVC
- 5. doctest pour dynamiquement les objets créés
- 6. Contrôles utilisateur créés dynamiquement en C#
- 7. JQuery accède aux objets créés dynamiquement
- 8. Comment ajouter des contrôles Windows Forms créés dynamiquement?
- 9. Flex Composants créés dynamiquement ajoutés aux composants personnalisés
- 10. Système de cache pour les fichiers créés dynamiquement?
- 11. ASP.Net MVC - Publication de champs créés dynamiquement dans une action
- 12. Comment faire pour supprimer les contrôles créés dynamiquement dans asp.net
- 13. Organisation de contrôles créés dynamiquement sur un formulaire Web
- 14. Problèmes de rechargement de viewState de mes contrôles ASP.Net créés dynamiquement
- 15. C# quelle est la meilleure méthode pour sauvegarder les contrôles créés dynamiquement
- 16. développement .net contrôles créés dynamiquement ont besoin de leurs propres méthodes
- 17. Utilisation de javascript pour boucler les contrôles créés dynamiquement avec php
- 18. Comment gérer les messages provenant de contrôles créés dynamiquement dans une application MFC?
- 19. Plusieurs opérateurs de sortie?
- 20. opérateurs C++ et arguments
- 21. Opérateurs suspendus dans Vim
- 22. comparez les opérateurs
- 23. opérateurs LINQ comme dans
- 24. Post-opérateurs combinés?
- 25. Opérateurs Xval et Comparsion?
- 26. Utilisation des opérateurs booléens
- 27. Comment construire dynamiquement LINQ
- 28. C++/CLI Finaliseurs et opérateurs
- 29. Opérateurs de conversion en C++
- 30. est ne sont pas créés