Bonjour, comme il y a beaucoup de fil qui dénigre ChatGPT, je propose un fil où les intervenants devront montrer les conversations les plus bluffantes qu'ils ont eu avec ce chatbot. Il faudrait se limiter à un exemple par intervenant.
Je commence avec une conversations qui m'a complètement fait halluciner.
D'abord, voici le contexte. En fait, il y a quelques années, j'ai beaucoup pratiqué l'algorithmie sur le site https://www.codingame.com/home.
Donc, aujourd'hui, j'ai voulu tester les capacités de bing chat (il fonctionne avec GPT4 et est complètement gratuit) sur un problème qui m'avait donné beaucoup de fil à retordre (j'avais même laissé tomber).
Voila l'énoncé :
Voila le code final proposé par bing chat :You're going back home late and unfortunately, you forgot your entry code. So you decide to try all the possibilities. It is not the smartest choice but your neighbors are sleeping...
The challenge is to find one of the shortest sequences of digits that contains all those possibilities.
There are x digits, from 0 to x-1, available for your entry code, and the code is composed of n of them.
For instance, there are eight possible codes for x = 2 and n = 3 : "000", "001", "010", "011", "100", "101", "110", and "111". And you can try all of them with the sequence "0001011100".
As there are multiple sequences of the same length that are solutions to this problem, you need to find the sequence describing the smallest possible number. For the previous example, the expected answer is not "0010111000" because 0010111000 > 0001011100.
Ce code fonctionne parfaitement.Code:class Solution { public static void main(String args[]) { Scanner in = new Scanner(System.in); int x = in.nextInt(); int n = in.nextInt(); // Générer les différentes séquences possibles List<String> sequences = new ArrayList<>(); generateSequences(sequences, "", x, n); // Créer un graphe de De Bruijn Map<String, List<String>> graph = new HashMap<>(); for (String seq : sequences) { String prefix = seq.substring(0, n - 1); if (!graph.containsKey(prefix)) { graph.put(prefix, new ArrayList<>()); } graph.get(prefix).add(seq); } List<String> allSequences = new ArrayList<>(); // Parcourir le graphe pour trouver la séquence minimale String startNode = sequences.get(0).substring(0, n - 1); StringBuilder sequence = new StringBuilder(startNode); findSequence(graph, startNode, sequence, allSequences); Collections.sort(allSequences); for (int i = 0; i < allSequences.size(); i++) { System.err.println("sequence" + i + ":" + allSequences.get(i)); } System.out.println(allSequences.get(0)); } private static void findSequence(Map<String, List<String>> graph, String currentNode, StringBuilder sequence, List<String> allSequences) { if (!allSequences.isEmpty()) { return; } if (graph.values().stream().allMatch(List::isEmpty)) { allSequences.add(sequence.toString()); return; } if (!graph.containsKey(currentNode) || graph.get(currentNode).isEmpty()) { return; } List<String> edges = new ArrayList<>(graph.get(currentNode)); for (String nextNode : edges) { graph.get(currentNode).remove(nextNode); sequence.append(nextNode.charAt(nextNode.length() - 1)); findSequence(graph, nextNode.substring(1), sequence, allSequences); sequence.deleteCharAt(sequence.length() - 1); graph.get(currentNode).add(nextNode); } } private static void generateSequences(List<String> sequences, String currentSeq, int x, int n) { if (currentSeq.length() == n) { sequences.add(currentSeq); return; } for (int i = 0; i < x; i++) { generateSequences(sequences, currentSeq + i, x, n); } } }
Maintenant voila la discussion que j'ai eu avec bing chat :
Cliquez pour afficher
-----