Chuck Norris (partie 1) | CodinGame by levieuxours

View this thread on steempeak.com
· @levieuxours ·
$0.96
Chuck Norris (partie 1) | CodinGame
![Capture.PNG](https://ipfs.busy.org/ipfs/QmdhkiJ2hYUWvSvbQKbfeKvMBvSKyjtdwhgXhMhVBvV4GQ)

Bonjour, dans mon [dernier article](https://busy.org/@levieuxours/chevaux-de-course-or-codingame),  je faisais la présentation de la plateforme CodinGame. Le principe vous a plu alors je pense que je vais continuer cette série. Cependant, elle prend pas mal de temps à rédiger car j'essaie d'être le plus claire possible mais ce n'est pas évident d'expliquer un raisonnement logique.

Dans cet article, je vais donc faire comme la dernière fois. A savoir lire le sujet de l'exercice et coder tout en expliquant mon raisonnement.

# Chuck Norris

Dans ce nouveau challenge, je vais apprendre à utiliser les boucles, les conditions, les chaînes de caractères et l'encodage (l'encodage est un système de règles pour convertir une information comme une lettre, un mot, son, image, ou un geste en une autre forme ou représentation, parfois abrégé ou secrète).

![Capture.PNG](https://ipfs.busy.org/ipfs/Qmcb2YriR73tbWr4snLd999i5gpuWucUgBbb7fgPorcpDZ)

Comme vous pouvez le voir, le but va être de code des messages donnés en **unaire**. C'est à dire de transformer une chaînes de caractère en 0. Bien évidemment, les 0 vont devoir suivre un ordre logique.

Cette fois-ci, l'IDE (Environnement de Développement Intégré) nous donne que très peu de code (je suis en langage C#) : 

```C#
using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;

/**
 * Auto-generated code below aims at helping you parse
 * the standard input according to the problem statement.
 **/
class Solution
{
    static void Main(string[] args)
    {
        string MESSAGE = Console.ReadLine();

        // Write an action using Console.WriteLine()
        // To debug: Console.Error.WriteLine("Debug messages...");

        Console.WriteLine("answer");
    }
}
```

Mais nous avons cependant beaucoup de renseignements dont les règles suivantes :

![2.PNG](https://ipfs.busy.org/ipfs/QmaA7heisPSrbR7iYAr9r8nqyXd5piLFfLqUPJLuJe7zWH)

Nous avons ici quelques renseignements sur comment coder nos messages. Nous allons tout d'abord les convertir en binaire puis en unaire (le binaire ressemble à ça : 1000011 -> pour coder **C**).

Si nous suivons les règles, le code unaire de **C** donnera finalement :
* le 1 que nous allons coder en 0 0
* les quatre 0 que nous allons coder en 00 0000
* les deux 1 que nous allons coder en 0 00

Nous allons donc avoir un message codé qui ressemble à ça : **0 0 00 0000 0 00**

### De la chaîne au binaire

Avant de passer à l'unaire, nous devons transformer notre chaîne de caractère en séquence binaire. Pour cela rien de plus simple (ou pas :D)

```C#
    // Fonction qui prend une chaîne et retourne son codage binaire
    public static string StringToBinary(string data)
    {
        StringBuilder sb = new StringBuilder();
 
        foreach (char c in data.ToCharArray())
        {
            sb.Append(Convert.ToString(c, 2).PadLeft(8, '0'));
        }
        return sb.ToString();
    }
```
Bon, j'ai trouvé ce code sur Internet je dois vous l'avouer. Pour utiliser cette fonction dans notre code, nous avons juste à l'appeler : StringToBinary() et lui envoyer en paramètre (entre les parenthèses) la chaîne à convertir en binaire.

Pour le moment, ce code nous retourne donc du binaire :
```C#
using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;

/**
 * Auto-generated code below aims at helping you parse
 * the standard input according to the problem statement.
 **/
class Solution
{
    static void Main(string[] args)
    {
        string MESSAGE = Console.ReadLine();

        
        // Write an action using Console.WriteLine()
        // To debug: Console.Error.WriteLine("Debug messages...");

        Console.WriteLine(StringToBinary(MESSAGE));
    }
    
    public static string StringToBinary(string data)
    {
        StringBuilder sb = new StringBuilder();
 
        foreach (char c in data.ToCharArray())
        {
            sb.Append(Convert.ToString(c, 2).PadLeft(7, '0'));
        }
        return sb.ToString();
    }
}
```
![Capture.PNG](https://ipfs.busy.org/ipfs/QmZBAirFRdz1XesTQ7THq6WKaPFxRpnVCZp1fq7P73o1mD)

Il ne nous reste maintenant juste qu'à convertir ce binaire en unaire mais ça je le garde pour un prochain épisode car comme j'ai déjà eu l'occasion de le dire, j'écris mon article en même temps que je fais l'exercice et il se fait donc un peu tard ! 

Un développeur ne se couche jamais tard :D *blague*
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
post_id72,204,584
authorlevieuxours
permlinkchuck-norris-partie-1-or-codingame
categoryfr
json_metadata{"community":"busy","app":"busy\/2.5.6","format":"markdown","tags":["fr","busy","coding","learn","blogger"],"users":["levieuxours"],"links":["https:\/\/busy.org\/@levieuxours\/chevaux-de-course-or-codingame"],"image":["https:\/\/ipfs.busy.org\/ipfs\/QmdhkiJ2hYUWvSvbQKbfeKvMBvSKyjtdwhgXhMhVBvV4GQ","https:\/\/ipfs.busy.org\/ipfs\/Qmcb2YriR73tbWr4snLd999i5gpuWucUgBbb7fgPorcpDZ","https:\/\/ipfs.busy.org\/ipfs\/QmaA7heisPSrbR7iYAr9r8nqyXd5piLFfLqUPJLuJe7zWH","https:\/\/ipfs.busy.org\/ipfs\/QmZBAirFRdz1XesTQ7THq6WKaPFxRpnVCZp1fq7P73o1mD"]}
created2019-03-28 20:59:24
last_update2019-03-28 20:59:24
depth0
children2
net_rshares1,563,538,611,957
last_payout2019-04-04 20:59:24
cashout_time1969-12-31 23:59:59
total_payout_value0.723 SBD
curator_payout_value0.241 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length4,599
author_reputation3,440,857,338,265
root_title"Chuck Norris (partie 1) | CodinGame"
beneficiaries
0.
accountbusy.org
weight1,000
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (56)
@soluce07 ·
Merci pour ce partage, toujours intéressant de suivre ton raisonnement Et cette fois, je ne suis pas en retard !
properties (22)
post_id72,223,397
authorsoluce07
permlinkre-levieuxours-chuck-norris-partie-1-or-codingame-20190329t064408866z
categoryfr
json_metadata{"community":"busy","app":"busy\/2.5.6","format":"markdown","tags":["fr"],"users":[],"links":[]}
created2019-03-29 06:44:12
last_update2019-03-29 06:44:12
depth1
children0
net_rshares0
last_payout2019-04-05 06:44:12
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length112
author_reputation8,981,178,609,606
root_title"Chuck Norris (partie 1) | CodinGame"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@fr-stars ·
re-levieuxours-chuck-norris-partie-1-or-codingame-20190329t185151902z
Ce post a été supporté par notre initiative de curation francophone @fr-stars. 
Rendez-vous sur notre serveur [**Discord**](https://discord.gg/CcNs5uP) pour plus d'informations
properties (22)
post_id72,246,864
authorfr-stars
permlinkre-levieuxours-chuck-norris-partie-1-or-codingame-20190329t185151902z
categoryfr
json_metadata{"app":"trail-bot"}
created2019-03-29 18:51:51
last_update2019-03-29 18:51:51
depth1
children0
net_rshares0
last_payout2019-04-05 18:51:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length176
author_reputation933,254,300,796
root_title"Chuck Norris (partie 1) | CodinGame"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000