Défi
Étant donné deux identifiants de questions, essayez de déterminer leur similitude en consultant les réponses.
Détails
Vous recevrez deux identifiants de questions pour codegolf.stackexchange.com
; vous pouvez supposer qu'il existe des questions pour les deux ID qui ne sont pas supprimées, mais ne sont pas nécessairement ouvertes. Vous devez parcourir toutes les réponses et déterminer la distance Levenshtein minimale entre le code dans les réponses aux deux questions (à l'exclusion des réponses supprimées). Autrement dit, vous devez comparer chaque réponse de la question 1 à chaque réponse de la question 2 et déterminer la distance minimale de Levenshtein. Pour trouver le code dans une réponse, suivez la procédure suivante:
Comment trouver l'extrait de code
Un corps de texte est le code réel de la réponse s'il est en guillemets et se trouve sur sa propre ligne, ou s'il est en retrait de 4 espaces, avec une ligne vide au-dessus, sauf s'il n'y a pas de texte au-dessus.
Exemples d'extraits de code valides et non valides (avec .
comme espace) (séparés par une tonne de signes égaux)
This is `not a valid code snippet because it is not on its own line`
========================================
This is:
`A valid code snippet`
========================================
This is
....not a valid code snippet because there's no spacing line above
========================================
This is
....A valid code snippet because there's a spacing line above
========================================
....Valid code snippet because there's no other text
========================================
S'il n'y a pas d'extraits de code valides dans la réponse, ignorez complètement la réponse. Notez que vous ne devez prendre que le premier bloc de code.
Spécifications finales
Les deux ID de question peuvent être saisis dans n'importe quel format raisonnable pour 2 entiers. La sortie doit être la plus petite distance Levenshtein entre deux réponses valides de l'un ou l'autre défi. S'il n'y a pas de réponses «valides» pour l'un des défis ou les deux, sortez -1
.
Cas de test
Pour les défis 115715
(Embedded Hexagons) et 116616
(Embedded Triangles) tous deux par le camarade SparklePony, les deux réponses au charbon (toutes deux par KritixiLithos) avaient une distance Levenshtein de 23, qui était la plus petite. Ainsi, votre sortie pour 115715, 116616
serait 23
.
Éditer
Vous pouvez supposer que la question a au plus 100 réponses en raison d'une restriction de taille de page API. Vous ne devez pas ignorer les backticks dans les blocs de code, uniquement si le bloc de code lui-même est créé à l'aide de backticks et non sur sa propre ligne.
Éditer
J'ai mis fin à la période de prime tôt parce que j'ai demandé à un mod d'obtenir une suspension d'une semaine et je ne voulais pas que la prime soit automatiquement attribuée à la réponse ayant obtenu le score le plus élevé (qui se trouve être la plus longue). Si une nouvelle soumission arrive ou si une soumission est suffisamment lue pour devenir inférieure à 532 octets avant la fin réelle de la période de prime (UTC 00:00 le 1er juin), je vous donnerai une prime pour rester fidèle à ma promesse, après la suspension expire. Si je me souviens bien, je dois doubler la période de prime la prochaine fois, donc si vous obtenez une réponse, vous pourriez obtenir +200 :)
la source
Réponses:
PowerShell, 532 octets
J'ai laissé des sauts de ligne là-dedans pour une certaine lisibilité. Les sont toujours reflétés dans mon nombre d'octets.
Je suis presque sûr d'avoir une idée de ça. La partie difficile pour moi était en fait d'obtenir la distance Levenshtein car PowerShell n'a pas de fonction intégrée pour autant que je sache. Pour cette raison, j'ai pu répondre au défi connexe sur la distance de Levenshtein . Lorsque mon code fait référence à une fonction anonyme pour LD, vous pouvez vous référer à cette réponse pour une explication plus détaillée de la façon dont cela fonctionne.
Code avec commentaires et indicateur de progression
Le code peut devenir très lent (à cause du LD), j'ai donc intégré moi-même certains indicateurs de progression afin de pouvoir suivre l'action telle qu'elle se déroulait et ne pas supposer qu'elle était coincée quelque part dans une boucle. Le code de surveillance de la progression n'est pas dans le bloc supérieur ni compté dans mon nombre d'octets.
Ma logique pour trouver les blocs de code est de prendre la réponse en HTML et de rechercher un jeu de balises de code, éventuellement entouré d'un jeu de balises pré qui commence sur sa propre ligne. Lors des tests, il a trouvé toutes les données correctes sur 6 ensembles de questions différents.
J'ai essayé de travailler à partir du code de démarque, mais il était trop difficile de trouver le bon bloc de code.
Exemples de parcours
la source
Java + Jsoup, 1027 octets
Les deux premiers arguments sont les ID de question.
Golfé:
Lisible:
}
la source
Mathematica, 540 octets
contribution
production
utilise EditDistance intégré qui "donne la distance d'édition ou de Levenshtein entre les chaînes ou les vecteurs u et v."
Quant au cas de test mathématique
renvoie 23
Je suppose que je peux jouer au golf un peu plus
Prend quelques minutes pour courir
la source