Bonjour,
Je me suis amusé à faire faire le même exercice de codage à bard et bingchat.
Il s'agit d'extraire le nombre de read soft-clippé du code cigare qu'on trouve dans les fichiers bam (fichiers d'alignement de séqunence).
Voici la fin du prompt utilisé :
La réponse de bard :Écrits un code java qui extrait le nombre de base soft clippé par cigare.
Le cigare 29S121M doit retourner 29.
Le cigare 90M60S doit retourner 60.
Le cigare 29S74M47S doit retourner 29 + 47.
La réponse de bingchat :Code:import java.util.Arrays; public class CigarSoftClipper { public static int getSoftClipLength(String cigar) { int softClipLength = 0; for (int i = 0; i < cigar.length(); i++) { char operation = cigar.charAt(i); int length = Integer.parseInt(cigar.substring(i + 1, i + 2)); if (operation == 'S') { softClipLength += length; } } return softClipLength; } public static void main(String[] args) { System.out.println(getSoftClipLength("29S121M")); // 29 System.out.println(getSoftClipLength("90M60S")); // 60 System.out.println(getSoftClipLength("29S74M47S")); // 76 } }
Le code de bingchat retourne le bon résultat et est simple à comprendre.Code:public class CigarParser { public static int extractSoftClippedBases(String cigar) { int softClippedBases = 0; StringBuilder number = new StringBuilder(); for (char c : cigar.toCharArray()) { if (Character.isDigit(c)) { number.append(c); } else if (c == 'S') { softClippedBases += Integer.parseInt(number.toString()); number.setLength(0); } else { number.setLength(0); } } return softClippedBases; } public static void main(String[] args) { String[] cigars = {"29S121M", "90M60S", "29S74M47S"}; for (String cigar : cigars) { int softClippedBases = extractSoftClippedBases(cigar); System.out.println("Le cigare " + cigar + " retourne " + softClippedBases + " base(s) soft-clippée(s)."); } } }
Le code de bard est à côté de la plaque et de très loin.
Je trouve cela étonnant une telle différence entre les deux.
-----