Utilisez ce bon mème

12

Il existe actuellement un mème sur Internet qui consiste à prendre une phrase, à inverser le sens et à ajouter n'tà la fin. Par exemple, I am smalldevientI am talln't

Défi

Pour relever le défi, nous allons simplifier ceci: votre tâche sera de détecter chaque fois qu'il y a une négation dans une phrase, et de la remplacer par la «positive» avec l' n'tajout à la fin. Il y aura des parties délicates qui seront expliquées dans les règles.

Règles

  • Vous devez prendre une chaîne en entrée et renvoyer une chaîne en sortie .
  • L'entrée sera une phrase en minuscule , avec seulement .et ,comme signes de ponctuation.
  • Vous devez remplacer tout no <any_word>ou not <any_word>par <any_word>n't.
  • no/ notdoit être un mot et non une sous-chaîne: vous n'avez rien à changer dansnone of those
  • Si le mot se termine déjà par un n, vous devez le remplacer n'tpar 't: no plandevenir plan'tet non plann't
  • Quand noou notn'est suivi d'aucun mot, d'un signe de ponctuation ou d'un autre no/ not, vous devez le remplacer par yesn't.
  • les mots composés comptent pour un mot. donc même s'il no-opcontient la sous-chaîne no, il ne contient pas le mot no. Le résultat sera donc no-opet non -opn't .
  • Vous n'avez pas à vous soucier des erreurs de grammaire. Par exemple, there is no wayrésultera en there is wayn't.
  • Aucune échappatoire standard n'est autorisée.
  • C'est , donc le code le plus court l'emporte.

Il y a quelques exemples, même si ce défi ne semble pas clair pour l'instant.

Exemples

Entrée: j'adore le codegolfing, mais je n'aime pas les programmes courts. est-ce que cette phrase a du sens ... bien sûr que non.
Sortie: j'aime le golf de code, mais je n'aime pas les programmes courts. est-ce que cette phrase a du sens ... bien sûr que non.

Entrée : vous n'êtes pas invité. Sortez.
Sortie : vous n'êtes pas invité. Sortez.

Entrée : je ne suis pas ok, je n'ai pas de plan et je n'ai pas de canon
Sortie : je ne suis pas ok, j'ai plan et je n'ai pas de pistolet

Entrée : oh non non non je refuse.
Sortie : oh oui non oui ne refuse pas.

Entrée : oh non non non, je refuse.
Sortie : oh oui non oui non oui non, je refuse.

Entrée : je ne peux pas le croire, vous ne pouvez pas coder le golf.
Sortie : je ne peux pas le croire, vous ne pouvez pas coder le golf.

Entrée : oh non ... il l'a encore fait.
Sortie : oh oui non ... il l'a encore fait.

Entrée : nnt n'est pas un mot, kevin. donc ce n'est pas non.
Sortie : nnt n'est pas un mot, kevin. donc ce n'est pas le cas.

Entrée : n'est-ce pas clair pas pour tout le monde
Sortie : n'est-ce pas clair pas pour tout le monde

Entrée : ce n'est pas du sens ...
Sortie : ce n'est pas du sens ...

Le gars au hasard
la source
1
Dans l'introduction, ne devrait pas I am smalldevenir I am bign't?
RedClover
4
Un point dit "l'entrée ne sera [...] qu'avec seulement. Et,". Un autre se réfère à "no-op". Mais cela contient un "-". "-" est-il autorisé ou non?
récursif
Doit se no ntraduire par nn'tou n't?
Kevin Cruijssen
no npourrait en résulter n'tparce que le «mot» se ntermine par un n.
Le mec au hasard
@Soaku petit, grand, grand, petit, grand, long, court, etc. sont tous utilisés de manière interchangeable. Cela n'a pas vraiment d' importance pour le bien de la question. Mais l'antonyme le plus logique pour petit serait grand, oui.
Yates

Réponses:

5

Rétine , 86 70 65 octets

T`-'`L
\bnot?\s+(?!not?\b)(\w+?)n?\b
$1n't
\bnot?\b
yesn't
T`L`-'

-16 octets grâce à @Neil .
-5 octets grâce à @ovs .

Essayez-le en ligne.

Explication:

T`-'`L             # Replace all "-" with "A" and all "'" with "B" to store them

\bnot?             # Then replace the word "no" or "not",
 \s+               #  followed by 1 or more whitespaces,
 (?!not?\b)(\w+?)  #  followed by a word/letter that is not "not" or "no"
 n?\b              #  minus a single trailing "n" if there are any
$1                 # with: the word/letter
 n't               #  appended with "n't"

\bnot?\b           # Then replace any remaining loose "no" or "not"
yesn't             # with "yesn't"

T`L`-'             # And finally replace all "A" with "-" and all "B" with "'" again
Kevin Cruijssen
la source
Je pense que cela ne devrait pas être le cas
Dead Possum
@DeadPossum Oui, j'y ai pensé moi-même pour l'instant et j'ai déjà demandé à OP si "non" est possible dans l'entrée.
Kevin Cruijssen
1
C'est étrange aussi
Dead Possum
1
Je pense que je l'ai à 70 octets .
Neil
1
Lvoici un raccourci pour A-Zéconomiser 2 octets T`-'`ABet vice versa.
Neil
4

Python 2 , 208 123 113 113 146 octets

lambda s:re.sub(r"\bnot?\b(?!['-])(\s(?!not?(\b)(?!['-]))([\w'-]+))?",lambda m:(m.group(3)or"yes")+"n't"[(m.group(3)or'')[-1:]=='n':],s)
import re

Essayez-le en ligne!

Perdu un tas d'octets à cause des mots se terminant par n'tou n. Soit ou est plus court, mais la manipulation des deux était plus longue.

TFeld
la source
2

Stax , 75 73 50 octets

ä§▀t9lJ₧5M#|+4╖¼├n▌ ·=┌«∙£╣▀K╖¥y▐▲·(■◄╙→á╣ó•ô╓╢Θ₧○

Exécuter et déboguer

récursif
la source
1

Japt , 72 octets

F=_r"%bnot?%s+(?!not?%b)(%w+?)n?%b|%bnot?%b(?!['-])",@Y=Y||"yes"Y+"n't"}

Essayez-le en ligne!

Logern
la source
Car "yes-no maybe-so", ça produit "yes - mayben't - so".
récursif
0

Java 8, 163 136 octets

s->s.replaceAll("(^|[ ,.])not?(?= *([,.]|$|not?(?=$|[ ,.])))","$1yesn't").replaceAll("(^|[ ,.])not? ([\\w'-]+?)n?(?=$|[ ,.])","$1$2n't")

-27 octets en créant un port de réponse Stax de @recursive .

Essayez-le en ligne.

Kevin Cruijssen
la source