#Japt, 61 59 92 85 84 bytes
I'm offline for most of the (long) weekend, if any more issues are discovered with this, please ask a mod to delete it for me until such a time as I can fix it.
Takes input as a string for both operations and returns a string for both as well or false
for invalid input.Assumes number inputs will always contain multiple digits, add 1 byte replacing UÉ
with Un<space>
if that's not valid. Returns false
for test case GIGATESTER
but, according to the rules, that should be invalid input.
V="OIREASGTBP"UÉ?¡VgXÃe"%v"²_i1'NÃe"%V"²_i1'UÃ:!Uè"%v%v|%V%V|[^{V}NU]" ©Ur"N|U" £VaX
Try it: Numbers -> Letters or Letters -> Numbers
24 bytes saved thank to obarakon, who also convinced me to take this up again after I abandoned it earlier. I wish he hadn't!332625(!) bytes sacrificed implementing a quick fix (i.e., yet to be fully golfed) to check input validity.
##Explanation (Yet to be updated to the latest version)
:Implicit input of string U.
V="..." :Assign the string of letters to variable V, in order.
UÉ :Subtract 1 from U, which will give a number (truthy) if the input is a number or NaN (falsey) if the input is a string.
? :If it's a number then
¡ : Map over the input string, replacing each character (digit) with ...
VgX : the character in string V at index X, the current digit.
à : End mapping.
e : Recursively replace ...
"%v"² : every occurrence of 2 vowels (RegEx) ...
_i1'N : with the current match with an "N" inserted at index 1.
à : End replacement.
e : Another recursive replacement of ...
"%V"² : every occurrence of 2 non-vowel characters (i.e., consonants) ...
_i1'U : with the current match with a "U" inserted at index 1.
à : End replacement.
: :Else, if it's a string then
Uè"%v%v|%V%V|[^{V}NU]" : Count the number of matches of 2 successive vowels OR 2 successive non-vowels OR any character not in contained in string V plus N & U.
: (The longest part of this code is the fecking input validation!)
? : If that count is greater than 0 then
T : Return 0.
: Else
Ur"N|U" : Replace every occurrence of "N" OR "U" in string U with nothing.
£ : Map over the string, replacing each character (letter) with ...
VaX : the index of the current character X in string V.
:Implicit output of resulting string