Vous recevrez deux tableaux / listes / vecteurs d'entiers non négatifs A et B . Votre tâche est de produire le plus grand entier N qui apparaît à la fois A et B , et est également unique dans les deux A et B .
Vous pouvez supposer qu'il existe au moins un tel numéro.
Toute méthode / format d'entrée et de sortie raisonnable est autorisé.
Ces échappatoires sont interdites.
C'est le code-golf , donc le code le plus court dans tous les langages de programmation gagne!
Cas de test:
A, B -> Sortie [6], [1, 6] -> 6 [1, 2, 3, 4], [4, 5, 6, 7] -> 4 [0, 73, 38, 29], [38, 29, 73, 0] -> 73 [1, 3, 4, 6, 6, 9], [8, 7, 6, 3, 4, 3] -> 4 [2, 2, 2, 6, 3, 5, 8, 2], [8, 7, 5, 8] -> 5 [12, 19, 18, 289, 19, 17], [12, 19, 18, 17, 17, 289] -> 289 [17, 29, 39, 29, 29, 39, 18], [19, 19, 18, 20, 17, 18] -> 17 [17, 29, 39, 29, 29, 39, 18, 18], [19, 19, 18, 20, 17, 18] -> 17
la source
[email protected]/d
) et prendre l'entrée comme une liste de deux listes.Python 3 ,
615654 octets7 octets enregistrés grâce à @ Mr.Xcoder , @ pizzapants184 et @ovs
Essayez-le en ligne!
la source
05AB1E ,
98 octets-1 octet grâce à Erik l'Outgolfer
Essayez-le en ligne!
la source
Husk , 7 octets
Prend l'entrée comme une liste de deux listes, fonctionne également pour n'importe quel nombre de listes (renvoyant le nombre le plus élevé qui se produit exactement une fois dans chacune, si possible). Essayez-le en ligne!
Explication
Il s'agit de la première réponse Husk à (ab) utiliser la nouvelle fonction "maximum by"
►
.la source
Bash + coreutils, 60 octets
Essayez-le en ligne
Bash, 89 octets
TIO
la source
sort -rn
avecsed q
à la fin au lieu detail -1
raser 1 octet. Super trouvaille avecgrep -wf
btw. +1Gelée , 11 octets
Essayez-le en ligne!
la source
`
!J, 23 octets
(-.-.@~:#])
supprime d'une liste tous les éléments répétés&
faites cela aux deux arguments([-.-.)
Nous voulons que A intersecte B. C'est la phrase équivalente: "A moins (A moins B)">./
Prenez le maximumEssayez-le en ligne!
la source
e.~#]
. Jouer au golf s'est avéré difficile ... J'ai essayé d'utiliser/.
-key sans succès (((1=#)/.~#~.)
pour la première partie qui est de 2 octets de plus selon mon décompte)PowerShell , 94 octets
Essayez-le en ligne!
Prend des entrées
$a
et des$b
tableaux. Construit unfilter
quigroup
est des éléments de réseau d'entrée en même temps et sort seulement ceux qui ont uncount
-eq
uel à1
( par exemple, seuls ceux qui sont uniques dans le tableau d'entrée).La ligne suivante construit ensuite l'algorithme. D'abord, nous
sort
$a
retirons ensuite ceux qui sont-in
les éléments uniques de$b
. Ceux-ci sont alors eux-mêmes uniques, le plus grand[-1]
est choisi, et nous en prenons.Name
. Cela reste sur le pipeline et la sortie est implicite.la source
Javascript (ES6),
102867571 octetsMerci @justinMariner d'être passé de 102 à 86
Merci @tsh d'être passé de 86 à 75
Merci @Arnauld d'être passé de 75 à 71
Essayez-le en ligne!
la source
e
qu'une fois dansa
etb
.lastIndexOf
comme ça, c'est assez intelligent. Vous pouvez le réduire à 86 octets: essayez-le en ligne! . Consultez les conseils JS pour en savoir plus.(g=x=>x.filter(y=>y==e).length==1)
soit plus courte.Haskell ,
5753 octetsEssayez-le en ligne!
UPD: Merci @Laikoni
la source
f
tant qu'opérateur infixe et écrire[1|...]==[1]
au lieu desum[1|...]==1
pour enregistrer certains octets.!
avecand
enregistre deux octets supplémentaires: essayez-le en ligne!Wolfram Language (Mathematica) , 40 octets
Essayez-le en ligne!
Comment ça marche
Tally@#
donne une liste des éléments uniques de la première entrée, ainsi que leur nombre: par exemple, lesTally[{2,2,2,6,3,5,8,2}]
rendements{{2,4},{6,1},{3,1},{5,1},{8,1}}
.Tally@#2
fait de même pour la deuxième liste et⋂
trouve des paires présentes dans les deux. Ensuite, nous sélectionnons (avecCases
) les paires se terminant par1
, en prenant le premier élément de chaque résultat, ce qui nous donne une liste de tous les jumeaux uniques. Enfin,Max
retourne le plus grand jumeau unique.la source
Röda , 48 octets
Essayez-le en ligne!
Inspiré par la réponse jq de jq170727 .
Explication:
la source
F # (.NET de base) ,
117115114111108 octets115114 octetsUne autre solution avec
countBy
cette fois:Essayez-le en ligne!
117111 octetsEssayez-le en ligne!
100% F #! Toute aide est la bienvenue!
6 octets gagnés grâce à la notation des préfixes!
108 octets
@
est la fonction concat! Merci @ Ayb4btu pour cet algorithme.Essayez-le en ligne!
la source
C # (.NET Core) ,
8584 octetsEssayez-le en ligne!
Solution naïve avec LINQ (
using System;using System.Linq;
+ 31 caractères, donc 116 octets avec en-tête)84! J'ai oublié de curry!
la source
Pip ,
1716 octetsIl s'agit d'une fonction qui prend deux listes comme arguments. Essayez-le en ligne!
Explication
la source
APL (Dyalog) , 18 caractères = 23 octets *
Un corps de programme complet. Demande la liste des listes de STDIN. Fonctionne avec n'importe quel nombre de listes. Sorties vers STDOUT.
Essayez-le en ligne!
⎕
invite pour l'entrée évaluée de STDIN{
…}⌸¨
Pour chaque liste, appelez la fonction suivante pour chaque élément unique de cette liste, en utilisant l'élément unique comme argument de gauche (⍺
) et la liste des indices de son occurrence comme argument de droite (⍵
):≢⍵
le décompte des indices (ie le nombre d'occurrences)1=
égal à 1⍺⍴⍨
utiliser cela pour remodeler l'élément spécifique (c.-à-d. donne une liste vide s'il n'est pas unique)Nous avons maintenant deux listes d'éléments uniques pour chaque liste d'entrée (bien que chaque élément soit une liste, et il existe des listes vides comme résidu des éléments non uniques).
∩/
intersection (réduction)∊
ϵ nlist (aplatir)⌈/
max (réduction)* en Classique, comptant
⌸
comme⎕U2338
.la source
MATL , 13 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
la source
PHP, 98 octets
Fournissez des tableaux en tant que paramètres GET
a
etb
.la source
Java 8, 133 octets
Explication:
Essayez-le ici.
la source
R , 73 octets
Essayez-le en ligne!
Calcule l'
A
intersectionB
, puis le maximum de la différence entre cela et les éléments dupliqués deA
etB
.la source
JavaScript ES5,
122121114 octetsJe suis nouveau ici, donc je ne sais pas vraiment si je peux supprimer la définition de la fonction et simplement mettre son contenu (ce qui me ferait économiser 17 octets)
Voici l'exemple de travail:
122121114122 à 121 octets: initialisation de l'habillage dans un for
121 à 114 octets:
b
doit être une chaînela source
b
et l'enregistrerb=''+b,
?f=(a,b)=>{for(b=''+b,i=a.sort().length;--i+1;)if(a[i]!=a[i+1]&&a[i]!=a[i-1]&&!(b.split(a[i]).length-2))return a[i]}
.SQLite , 118 octets
Essayez-le en ligne!
Première fois en SQL, toute aide est la bienvenue!
la source
Jq 1,5 , 76 octets
Étendu
Essayez-le en ligne!
Voici une autre solution de même longueur:
Étendu
Essayez-le en ligne!
la source
APL, 47 octets
Déclare une fonction anonyme qui prend deux vecteurs, élimine les éléments en double, puis trouve le plus grand élément à l'intersection des résultats.
A←⍺
etB←⍵
stocker les arguments passés à la fonction dansA
etB
.a=b
renvoie un vecteur avec 1 dans chaque index dans lequela
est égal àb
. Sia
est un scalaire (c'est-à-dire une quantité unique et non un vecteur), cela renvoie un vecteur avec 1 partout où l'élément dansb
esta
et 0 quand il ne l'est pas. Par exemple:{+/⍵=A}
: fonction anonyme imbriquée; trouver les occurrences de l'argument dans le vecteurA
et les additionner, c'est-à-dire trouver le nombre d'occurrences de l'argument dansA
1={+/⍵=A}¨A
: appliquer la fonction anonyme imbriquée à chaque élément de A et trouver ceux qui égalent 1, c'est-à-dire des éléments uniques((1={+/⍵=A}¨A)/A←⍺)
: après avoir trouvé l' emplacement des éléments uniques, sélectionnez uniquement ces éléments dans le vecteur d'origine (/
sélectionne parmi les arguments de droite les éléments dont les emplacements correspondent à 1 dans l'argument de gauche)R←((1={+/⍵=A}¨A)/A←⍺)∩(1={+/⍵=B}¨B)/B←⍵
: répète le processus pour le deuxième argument; maintenant que nous avons juste les éléments uniques, trouvez l'intersection c'est-à-dire les éléments communs et stockez-les dans le vecteurR
R[⍒R]
: accéder aux éléments deR
dans l'ordre décroissant1↑R[⍒R]
: prendre le premier élément duR
moment où il est trié par ordre décroissantCas de test:
la source
J , 30 octets
Comment ça marche:
Je commence par tester où les deux listes se chevauchent
=/
(insère un test d'égalité entre tous les membres des listes:Plus d'un 1 dans la même colonne signifie que le nombre n'est pas unique pour l'argument de gauche (6 dans ce cas); dans la rangée - pour le bon argument (3)
Ensuite, je résume toutes les lignes et toutes les colonnes pour trouver où sont les doublons:
Je trouve le produit cartésien des listes ci-dessus et définit les membres supérieurs à 1 à 0.
Je masque la matrice d'égalité c avec m pour trouver les éléments uniques communs aux deux listes et multiplie l'argument de gauche par ceci.
Ensuite, j'aplatis la liste et trouve l'élément max:
Essayez-le en ligne!
la source
C # (.NET Core) ,
66 + 31 = 9765 + 31 = 96 octetsEssayez-le en ligne!
+31 octets pour
using System;using System.Linq;
Je me suis inspiré de la réponse de @ aloisdg. Cependant, au lieu de rechercher des valeurs uniques dans les deux tableaux, j'ai inversé l'ordre des opérations afin que ce
intersect
soit en premier, puis je trouve la valeur maximale des éléments qui se produisent deux fois lorsque les tableaux sont concaténés et se trouvent à leur intersection. Je peux utiliser<3
commeCount
sera au moins 2 pour n'importe quelle valeur, comme ce sera dans les deux tableaux.Remerciements
-1 octet grâce à @aloisdg et sa suggestion d'utiliser le
Func
curry.la source
Octave ,
5756 octetsFonction anonyme qui prend en entrée un tableau de cellules de deux tableaux numériques.
Essayez-le en ligne!
Explication
Pour chacun (
cellfun(@(x)...)
) des deux tableaux d'entrée, cela crée une matrice de comparaisons d'égalité par paire entre ses entrées (x.'==x
); conserve (x(...)
) uniquement les entrées pour lesquelles la somme des colonnes est1
(sum(...)==1
); et emballe le résultat dans une cellule ({...}
). L'intersection (intersect
) des deux résultats ({:}
) est calculée et le maximum (max(...)
) est pris.la source
Wolfram Language (Mathematica) , 49 octets
Essayez-le en ligne!
la source