Modifica: questa risposta presuppone che il set di 41 includa il set originale di 40.
Hai davvero due problemi:
Ricerca di un 41 ° numero
Quello che stai cercando qui è un buco in cui puoi introdurre di nascosto un nuovo numero, quindi la prima cosa che devi fare è ordinarla.
Con la tua lista ordinata in mano, le scorciatoie facili sono per vedere se c'è una lacuna all'inizio (il primo numero è maggiore di 1) o la fine (l'ultimo numero è inferiore a 1.000). Se uno di questi è vero, il 41esimo elemento può essere 1 o 1.000 a seconda di quale è. Il gioco è fatto.
Se la lista ordinata contiene 1 e 1.000, devi attraversarla finché non trovi due numeri adiacenti che hanno una differenza maggiore di uno. Lo spazio tra questi due numeri rappresenta il divario, e il 41 ° elemento è un numero in tale intervallo. La cosa più semplice da fare sarebbe una maggiore del minore dei due numeri di uno in meno rispetto al maggiore.
Ripristino dei 40 numeri originali
Il problema del tuo amico ha un difetto in quanto non fornisce alcuna informazione su come viene fornito il set originale di 40 numeri (set non ordinato, elenco, ecc.) o come deve essere restituito il set contenente il 41esimo numero.
Se i set forniti e restituiti sono in realtà un elenco ordinato di 40 elementi (ordinati solo, non necessariamente ordinati), il nuovo numero può essere aggiunto come 41 ° elemento e quindi ritagliato successivamente per tornare all'originale.
Se i set non sono ordinati, non c'è modo di capire quale elemento deve essere rimosso per ripristinare l'originale 40. Semplicemente non sai cosa è stato aggiunto.
Potresti pensare che ci sia un modo intelligente di dare il numero che aggiungi un'intelligenza che rivelerà l'identità del numero aggiunto quando ti verrà consegnato un set di 41 in seguito, ma non lo è. Qualcuno che conosce il tuo algoritmo potrebbe costruire un set valido di 40 che risulterà in un set di 41 che produce la risposta sbagliata quando riduci a 40.