recherche

Maison  >  Questions et réponses  >  le corps du texte

php - Il y a 48 chaînes de 1 et 0 représentant l'heure d'une journée, en unités d'une demi-heure

L'exigence est de convertir 00h30 - 11h00 du jour en cours en une chaîne de seulement 1 et 0, où 1 signifie inclus dans la période et 0 signifie non inclus

La chaîne résultante de 00h30 à 11h00 est 0111111111111111111111000000000000000000000000000

Les horaires peuvent être dispersés et pas nécessairement cohérents. Par exemple, 11h00-12h00 et 14h00-16h00.

S'il vous plaît, dites-moi quoi faire. Merci les gars~

阿神阿神2773 Il y a quelques jours502

répondre à tous(3)je répondrai

  • 淡淡烟草味

    淡淡烟草味2017-05-16 13:05:25

    Écrit une version js pour la console

    let calcPos = arr=>arr[0]*2+(arr[1]===0?0:1);
    ([[0,30],[11,0]].reduce(
        (a,b,i,arr)=>
            a+= new Array(calcPos(b)+(i===0||i%2===0?0:1)-a.length)
                .fill(i%2===0?"0":"1")
                .join("")
        , "")+new Array(48).fill("0").join(""))
        .slice(0,48);

    Le temps est utilisé[[0,30],[11,0]]表示00:30 - 11:00, donc la deuxième situation est comme ça

    ([[0,30],[11,0],[14,0],[16,0]].reduce((a,b,i,arr)=>a+=new Array(calcPos(b)+(i===0||i%2===0?0:1)-a.length).fill(i%2===0?"0":"1").join(""), "")+new Array(48).fill("0").join("")).slice(0,48);

    Ce qui suit est le décodage

    ("0"+"011111111111111111111110000011111000000000000000")
        .split("")
        .reduce(
            (a,b,i,arr)=>
                i===0?a:b!==arr[i-1]?[...a, (b==="1"?i:(i-1)) -1]:a
            , [])
        .map(i=>[(i-(i%2===0?0:1))/2, i%2===0?0:30]);

    répondre
    0
  • 黄舟

    黄舟2017-05-16 13:05:25

    Convertissez le temps en secondes, et vous pouvez changer les secondes en binaire. Quant à savoir si vous pouvez utiliser le format binaire selon la table de codage ou d'autres méthodes, c'est à vous de décider

    .

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:05:25

    L'unité d'une demi-heure divise 1 jour en 48 segments. 0-47 indique que le numéro de segment correspond à chaque période de temps.
    La i-ième chaîne de chaîne correspond au numéro de segment i. time. 1 indique que ce n'est pas pendant cette période.
    Le programme spécifique n'est pas difficile à écrire.
    Demandez simplement le numéro de segment et remplacez le contenu de la chaîne.
    Le numéro de segment permet de convertir le temps en heures, puis de le diviser par 0,5 pour arrondir.

    répondre
    0
  • Annulerrépondre