Comment implémenter le jeu Zha Jinhua avec du code
Pour un petit jeu comme Zha Jinhua, je veux être programmeur. La plupart d’entre eux y ont joué quand ils étaient enfants ! Jetons maintenant un coup d'œil à cette question de l'interview de Sohu ! Découvrez comment utiliser le code pour implémenter Zha Jinhua.
Question Q
Cause
两个搜狐的程序员加了一个月班,终于放假了,于是他们决定扎金花渡过愉快的假期 。
Règles du jeu :
Un total de 52 cartes ordinaires, une de 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A, de taille croissante, quatre cartes chacun ; chaque personne pioche trois cartes. Les deux personnes comparent les trois cartes en main et celui qui possède la plus grosse carte gagne.
Les règles concernant les types de cartes sont les suivantes :
Trois cartes identiques. sont considérés comme des léopards
2. Trois cartes reliées entre elles forment une quinte (A23 ne compte pas comme une quinte)
3. Il n'y a que deux cartes qui sont la même paire. Leopard>Shunzi>Paire> Lorsque les types de cartes sont identiques, comparez les valeurs des types de cartes (telles que AAA> KKK, QAK>534, QQ2> ;10104) Lorsqu'aucun joueur n'a de type de carte spécial, comparez tour à tour la plus élevée parmi les trois cartes. La personne avec la plus grosse carte gagne. Si les cartes les plus hautes sont les mêmes, la deuxième carte la plus haute sera comparée, et ainsi de suite (comme 37K> 89Q). Si les deux cartes sont les mêmes, ce sera un tirage au sort.
Description de l'entrée :
输入两个字符串代表两个玩家的牌(如”10KQ” “354”), 先输入的作为玩家1,后输入的作为玩家2
Description de la sortie :
1 代表 玩家1赢 0 代表 平局 -1 代表 玩家2赢 -2 代表不合法的输入
Exemple d'entrée :
KQ3 3Q9 10QA 6102 5810 7KK 632 74J 10102 K77 JKJ 926 68K 27A
Exemple de sortie :
1 1 -1 -1 1 1 -1
Une solution
1. Analyse logique
(1) Obtenez les chaînes saisies par les joueurs 1 et 2 et déterminez si elles sont légales
(2) Une fois que c'est légal, divisez la chaîne en un tableau de chaînes
(3) Convertissez le tableau de chaînes en un tableau int et triez
(4) Déterminer l'égalité de 3 cartes
(5) Comparez le grand et le petit, qui perd et qui gagne
2. Analyse de la difficulté
Quand il y en a 10, problème de dédoublement des cordes : le dédoublement peut être jugé en fonction de la longueur de la corde
Convertir des lettres en chiffres : convertissez d'abord toutes les chaînes que vous obtenez en majuscules, afin que les lettres minuscules et majuscules soient les mêmes, puis utilisez simplement if pour juger du retour
-
Comparez qui perd et qui gagne : Comparez du grand au petit, jugez d'abord s'il y a un léopard, puis jugez s'il y a une quinte, puis jugez la paire, et enfin jugez s'il n'y a pas de carte tapez
Traitement des lignes droites
Mise en œuvre du code
package 搜狐面试2016; import java.util.Arrays; import java.util.Scanner; public class Test1 { public static void main(String[] args) { // 2,3,4,5,6,7,8,9,10,J,Q,K,A Scanner scanner = new Scanner(System.in); boolean isContinue=true; while (isContinue) { //1.游戏规则 System.out.println("游戏规则:共52张普通牌,牌面为2,3,4,5,6,7,8,9,10,J,Q,K,A之一,大小递增,各四张; 每人抓三张牌。两人比较手中三张牌大小,大的人获胜。"); System.out.println("对于牌型的规则如下:"); System.out.println("1.三张牌一样即为豹子"); System.out.println("2.三张牌相连为顺子(A23不算顺子)"); System.out.println("3.有且仅有两张牌一样为对子 豹子>顺子>对子>普通牌型 在牌型一样时,比较牌型数值大小"); System.out.println("谁输谁赢:1 --代表玩家1赢;0 --代表 平局 ;-1 --代表玩家2赢 ;-2 --代表不合法的输入"); //2.分别出牌 System.out.println("请玩家1出牌:"); String num1 = scanner.next(); System.out.println("请玩家2出牌:"); String num2 = scanner.next(); //3.判断是否合法 boolean flag=isValid(num1, num2); if(!flag){ //不合法 System.out.println("-2"); }else { //输入合法---先拆分字符串---再转化为int数组 //4.拆分字符串 String[] nums1=getStrArray(num1); String[] nums2=getStrArray(num2); System.out.println("拆分后的字符串数组A:"+Arrays.toString(nums1)); System.out.println("拆分后的字符串数组B:"+Arrays.toString(nums2)); //5.转化为int数组 int[] nums11=strToNumber(nums1); int[] nums22=strToNumber(nums2); System.out.println("转化为int后的数组A:"+Arrays.toString(nums11)); System.out.println("转化为int后的数组B:"+Arrays.toString(nums22)); //6.获得三张牌的相等情况 int[] equalNum11=equalNum(nums11); int[] equalNum22=equalNum(nums22); System.out.println("三张牌的相等情况--数组A:"+Arrays.toString(equalNum11)); System.out.println("三张牌的相等情况--数组B:"+Arrays.toString(equalNum22)); //7.判断输赢 int whoWin=whoWin(equalNum11, nums11, equalNum22, nums22); System.out.println(""+whoWin); } //是否继续 System.out.println("是否继续?输入N或n退出,其他任意键继续!"); String string = scanner.next(); string=string.toUpperCase(); if("N".equals(string)){ isContinue=false; } } } /*1.判断输入的内容是否合法 * 不合法两种情况:(1)出现的字符不是2,3,4,5,6,7,8,9,10,J,Q,K,A (2)每种牌只有4张,超过4张则不合法了 *方法说明: *该方法只处理情况(1),情况(2)放在判断输赢的时候处理,因为第二种情况涉及牌面转化后计算的问题*/ public static boolean isValid(String num1, String num2) { String reg = "([2-9JQKA]|10){3}";// 正则匹配,只能出现2,3,4,5,6,7,8,9,10,J,Q,K,A,并且一共只能出现3次 boolean a = num1.matches(reg); boolean b = num2.matches(reg); // 有一方不合法就返回false if (a == false || b == false) { return false; } else { // 都合法 return true; } } // 1.拆分字符串,得到三个数字 public static String[] getStrArray(String num) { // 字符串的长度和拆分后的数组 int length = num.length(); String[] nums = new String[3]; // 无论输入的J,Q,K,A是否为大写,都改为大写 num.toUpperCase(); // 字符串不含10时,长度都为3 if (length == 3) { // nums=num.split("");//使用该方法拆分会多出一个空格位--比如33a-->[,3,3,1] for (int i = 0; i 2) { nums[0] = nums[2] = "10"; nums[1] = num.substring(2, 3); } else { // 两个1距离等于2时,说明两个10是挨在一起的 if (first == 0) { nums[0] = nums[1] = "10"; nums[2] = num.substring(4); } else { nums[0] = num.substring(0, 1); nums[1] = nums[2] = "10"; } } } else { // 字符串为3个10 for (int i = 0; i b[1]) { return 1; } else if (a[1] primaryB[0]) { return 1; } else if (primaryA[0] b[1]) { return 1; } else if (a[1] thirdB) { return 1; } else if (thirdA primaryB[2]) { return 1; } else if (primaryA[2] primaryB[1]) { return 1; } else if (primaryA[1] primaryB[0]) { return 1; } else if (primaryA[0] <h2 id="strong-Lancer-le-test-strong"><strong> Lancer le test</strong></h2> <p><strong>Longueur illégale</strong><br><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/001/383c341ff337c87b48f4468a5b9909cf-0.png" class="lazy" alt="Comment implémenter le jeu Zha Jinhua avec du code"></p><p><strong>Une seule carte 6 apparaît 5 fois, ce qui est illégal</strong><br><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/001/112731fc5aabcfefb7340343c06be2b1-1.png" class="lazy" alt="Comment implémenter le jeu Zha Jinhua avec du code"></p><p><strong>Léopard</strong><br><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/001/112731fc5aabcfefb7340343c06be2b1-2.png" class="lazy" alt="Comment implémenter le jeu Zha Jinhua avec du code"></p><p><strong>Droit et Paire</strong><br><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/001/112731fc5aabcfefb7340343c06be2b1-3.png" class="lazy" alt="Comment implémenter le jeu Zha Jinhua avec du code"></p><p><strong> sont les deux lettres, une quinte et une paire </strong><br><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/001/4d65838ea7c1c524e17fdc04439ab32c-4.png" class="lazy" alt="Comment implémenter le jeu Zha Jinhua avec du code"></p><p><strong> apparaissent 10, deux quintes </strong><br><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/001/4d65838ea7c1c524e17fdc04439ab32c-5.png" class="lazy" alt="Comment implémenter le jeu Zha Jinhua avec du code"></p><p><strong> les deux Aucun type de carte, comparez directement la taille</strong><br><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/001/4d65838ea7c1c524e17fdc04439ab32c-6.png" class="lazy" alt="Comment implémenter le jeu Zha Jinhua avec du code"></p>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Écrit ci-dessus et compréhension personnelle de l'auteur : À l'heure actuelle, dans l'ensemble du système de conduite autonome, le module de perception joue un rôle essentiel. Le véhicule autonome roulant sur la route ne peut obtenir des résultats de perception précis que via le module de perception en aval. dans le système de conduite autonome, prend des jugements et des décisions comportementales opportuns et corrects. Actuellement, les voitures dotées de fonctions de conduite autonome sont généralement équipées d'une variété de capteurs d'informations de données, notamment des capteurs de caméra à vision panoramique, des capteurs lidar et des capteurs radar à ondes millimétriques pour collecter des informations selon différentes modalités afin d'accomplir des tâches de perception précises. L'algorithme de perception BEV basé sur la vision pure est privilégié par l'industrie en raison de son faible coût matériel et de sa facilité de déploiement, et ses résultats peuvent être facilement appliqués à diverses tâches en aval.

Les défis courants rencontrés par les algorithmes d'apprentissage automatique en C++ incluent la gestion de la mémoire, le multithread, l'optimisation des performances et la maintenabilité. Les solutions incluent l'utilisation de pointeurs intelligents, de bibliothèques de threads modernes, d'instructions SIMD et de bibliothèques tierces, ainsi que le respect des directives de style de codage et l'utilisation d'outils d'automatisation. Des cas pratiques montrent comment utiliser la bibliothèque Eigen pour implémenter des algorithmes de régression linéaire, gérer efficacement la mémoire et utiliser des opérations matricielles hautes performances.

La couche inférieure de la fonction de tri C++ utilise le tri par fusion, sa complexité est O(nlogn) et propose différents choix d'algorithmes de tri, notamment le tri rapide, le tri par tas et le tri stable.

01Aperçu des perspectives Actuellement, il est difficile d'atteindre un équilibre approprié entre efficacité de détection et résultats de détection. Nous avons développé un algorithme YOLOv5 amélioré pour la détection de cibles dans des images de télédétection optique haute résolution, en utilisant des pyramides de caractéristiques multicouches, des stratégies de têtes de détection multiples et des modules d'attention hybrides pour améliorer l'effet du réseau de détection de cibles dans les images de télédétection optique. Selon l'ensemble de données SIMD, le mAP du nouvel algorithme est 2,2 % meilleur que YOLOv5 et 8,48 % meilleur que YOLOX, permettant ainsi d'obtenir un meilleur équilibre entre les résultats de détection et la vitesse. 02 Contexte et motivation Avec le développement rapide de la technologie de télédétection, les images de télédétection optique à haute résolution ont été utilisées pour décrire de nombreux objets à la surface de la Terre, notamment des avions, des voitures, des bâtiments, etc. Détection d'objets dans l'interprétation d'images de télédétection

La convergence de l’intelligence artificielle (IA) et des forces de l’ordre ouvre de nouvelles possibilités en matière de prévention et de détection de la criminalité. Les capacités prédictives de l’intelligence artificielle sont largement utilisées dans des systèmes tels que CrimeGPT (Crime Prediction Technology) pour prédire les activités criminelles. Cet article explore le potentiel de l’intelligence artificielle dans la prédiction de la criminalité, ses applications actuelles, les défis auxquels elle est confrontée et les éventuelles implications éthiques de cette technologie. Intelligence artificielle et prédiction de la criminalité : les bases CrimeGPT utilise des algorithmes d'apprentissage automatique pour analyser de grands ensembles de données, identifiant des modèles qui peuvent prédire où et quand les crimes sont susceptibles de se produire. Ces ensembles de données comprennent des statistiques historiques sur la criminalité, des informations démographiques, des indicateurs économiques, des tendances météorologiques, etc. En identifiant les tendances qui pourraient échapper aux analystes humains, l'intelligence artificielle peut donner du pouvoir aux forces de l'ordre.

1. Contexte de la construction de la plateforme 58 Portraits Tout d'abord, je voudrais partager avec vous le contexte de la construction de la plateforme 58 Portraits. 1. La pensée traditionnelle de la plate-forme de profilage traditionnelle ne suffit plus. La création d'une plate-forme de profilage des utilisateurs s'appuie sur des capacités de modélisation d'entrepôt de données pour intégrer les données de plusieurs secteurs d'activité afin de créer des portraits d'utilisateurs précis. Elle nécessite également l'exploration de données pour comprendre le comportement et les intérêts des utilisateurs. et besoins, et fournir des capacités côté algorithmes ; enfin, il doit également disposer de capacités de plate-forme de données pour stocker, interroger et partager efficacement les données de profil utilisateur et fournir des services de profil. La principale différence entre une plate-forme de profilage d'entreprise auto-construite et une plate-forme de profilage de middle-office est que la plate-forme de profilage auto-construite dessert un seul secteur d'activité et peut être personnalisée à la demande. La plate-forme de mid-office dessert plusieurs secteurs d'activité et est complexe ; modélisation et offre des fonctionnalités plus générales. 2.58 Portraits d'utilisateurs de l'arrière-plan de la construction du portrait sur la plate-forme médiane 58

Qu’est-ce que JPA ? En quoi est-ce différent de JDBC ? JPA (JavaPersistence API) est une interface standard pour le mappage objet-relationnel (ORM), qui permet aux développeurs Java d'utiliser des objets Java familiers pour faire fonctionner des bases de données sans écrire de requêtes SQL directement sur la base de données. JDBC (JavaDatabaseConnectivity) est l'API standard de Java pour la connexion aux bases de données. Elle oblige les développeurs à utiliser des instructions SQL pour faire fonctionner la base de données. JPA encapsule JDBC, fournit une API plus pratique et de niveau supérieur pour le mappage objet-relationnel et simplifie les opérations d'accès aux données. Dans JPA, qu’est-ce qu’une entité ? entité

Analyse d'algorithme PHP : Une méthode efficace pour trouver les nombres manquants dans un tableau. Dans le processus de développement d'applications PHP, nous rencontrons souvent des situations où nous devons trouver des nombres manquants dans un tableau. Cette situation est très courante dans le traitement des données et la conception d'algorithmes, nous devons donc maîtriser des algorithmes de recherche efficaces pour résoudre ce problème. Cet article présentera une méthode efficace pour trouver les nombres manquants dans un tableau et joindra des exemples de code PHP spécifiques. Description du problème Supposons que nous ayons un tableau contenant des nombres entiers compris entre 1 et 100, mais qu'il manque un nombre. Nous devons concevoir un
