Bonefire: Sorted Union

Am găsit pe internet două soluții de rezolvare a acestei probleme.

function unite(arr1, arr2, arr3) {
 var newArr = [];
 for ( var prop in arguments ) {
 newArr = newArr.concat(arguments[prop]);
 }
 return newArr.reduce(function(a,b){if(a.indexOf(b)<0) a.push(b); return a;},[]);
}

unite([1, 3, 2], [5, 2, 1, 4], [2, 1]);

și

function unite(arr1, arr2, arr3) {
 var newArr = [];
 for ( var prop in arguments ) {
 newArr = newArr.concat(arguments[prop]);
 }
 return newArr.filter(function(el,id,arr){ return arr.indexOf(el) == id });
}

unite([1, 3, 2], [5, 2, 1, 4], [2, 1]);

găsite pe http://mikeheavers.com/main/code-item/removing_duplicates_in_an_array_using_javascript și http://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array

Bonfire: Boo who

O soluție extrem de simplă:

function boo(bool) {
// What is the new fad diet for ghost developers? The Boolean.
return Object.prototype.toString.call(bool) == "[object Boolean]";
}

boo(null);

creată după ce am citit câteva rânduri de pe http://tobyho.com/2011/01/28/checking-types-in-javascript/

P.S.

Object.prototype.toString.call( nume-variabilă ) e foarte folositor și pentru a afla alte tipuri de date, cum ar fi null (returnează [object Null] pe când typeof variabilă returnează doar Object).

E fun!

Bonfire: Missing Letters

Sunt destul de entuziasmat de soluția găsită:

function fearNotLetter(str) {
  for ( var i = str.charCodeAt(0); i <= str.charCodeAt(str.length-1); i += 1 ) {
    if ( str.indexOf(String.fromCharCode(i)) < 0 ) {
      return String.fromCharCode(i);
    }
  }
  return;
}

fearNotLetter("abce");

FreeCodeCamp sugerează să fie folosite două metode ale obiectului String și anume: String.charCodeAt() și String.fromCharCode() însă eu am mai folosit și indexOf pentru a avea un cod cât mai dinamic.

Probabil că programatorii buni vor găsi deficiențe în codul de mai sus (sau poate peste ceva timp voi găsi chiar eu chestii care ar putea fi îmbunătățite) însă pentru moment sunt mulțumit de soluția găsită.

Bonfire: DNA Pairing

Am găsit mai multe soluții pe internet pentru acest bonfire și cred că sunt mult mai bune decât cea găsită de mine însă am vrut să testez și altceva și să mă joc puțin cu Javascript.

Probabil nu e cea mai elegantă și/sau dinamică soluție:

function pair(str) {
var strArr = str.split('');
var pairs = [['A', 'T'], ['C', 'G']];
var arr = [];

strArr.forEach(function(el, id){
for ( var i = 0; i < pairs.length; i += 1 ) {
var elem = pairs[i].indexOf(el);
if ( elem === 0 ) {
arr.push([el, pairs[i][1]]);
}
if ( elem === 1 ) {
arr.push([el, pairs[i][0]]);
}
}
});

return arr;
}

pair("GCG");

 

 

Bonfire: Pig Latin

Acest bonfire nu mi s-a părut complicat.

function translate(str) {
// create an array with vowels
// get the first index of a voewl
var vowels = /[aeiou]/;
var firstVowel = str.search(vowels);
var consonants = str.substr(0, firstVowel);
var suffix = consonants + 'ay';

console.log(consonants);

if ( firstVowel > 0 ) {
str = str.substr(firstVowel) + suffix;
} else {
str = str + 'way';
}

// str = str.substr(first) + suffix
return str;
}

translate("consonant");