6 kyu

Are they the "same"?

11,580 of 107,611g964

Description:

Given two arrays a and b write a function comp(a, b) (orcompSame(a, b)) that checks whether the two arrays have the "same" elements, with the same multiplicities (the multiplicity of a member is the number of times it appears). "Same" means, here, that the elements in b are the elements in a squared, regardless of the order.

Examples

Valid arrays
a = [121, 144, 19, 161, 19, 144, 19, 11]  
b = [121, 14641, 20736, 361, 25921, 361, 20736, 361]

comp(a, b) returns true because in b 121 is the square of 11, 14641 is the square of 121, 20736 the square of 144, 361 the square of 19, 25921 the square of 161, and so on. It gets obvious if we write b's elements in terms of squares:

a = [121, 144, 19, 161, 19, 144, 19, 11] 
b = [11*11, 121*121, 144*144, 19*19, 161*161, 19*19, 144*144, 19*19]
Invalid arrays

If, for example, we change the first number to something else, comp is not returning true anymore:

a = [121, 144, 19, 161, 19, 144, 19, 11]  
b = [132, 14641, 20736, 361, 25921, 361, 20736, 361]

comp(a,b) returns false because in b 132 is not the square of any number of a.

a = [121, 144, 19, 161, 19, 144, 19, 11]  
b = [121, 14641, 20736, 36100, 25921, 361, 20736, 361]

comp(a,b) returns false because in b 36100 is not the square of any number of a.

Remarks

  • a or b might be [] or {} (all languages except R, Shell).
  • a or b might be nil or null or None or nothing (except in C++, COBOL, Crystal, D, Dart, Elixir, Fortran, F#, Haskell, Nim, OCaml, Pascal, Perl, PowerShell, Prolog, PureScript, R, Racket, Rust, Shell, Swift).

If a or b are nil (or null or None, depending on the language), the problem doesn't make sense so return false.

Fundamentals

More By Author:

Check out these other kata created by g964

Stats:

CreatedMar 14, 2015
PublishedMar 14, 2015
Warriors Trained296223
Total Skips60339
Total Code Submissions1999292
Total Times Completed107611
Ruby Completions3757
C# Completions6196
Python Completions34285
Java Completions11580
Clojure Completions548
Haskell Completions1395
JavaScript Completions32142
CoffeeScript Completions53
Elixir Completions554
TypeScript Completions2643
C++ Completions4633
PHP Completions2251
Crystal Completions51
F# Completions182
C Completions2604
Rust Completions1703
Swift Completions886
R Completions248
Scala Completions760
Shell Completions128
OCaml Completions91
Julia Completions116
Kotlin Completions1019
PowerShell Completions78
Go Completions1423
Nim Completions37
PureScript Completions35
NASM Completions20
Racket Completions65
Groovy Completions45
Prolog Completions35
CFML Completions20
Fortran Completions20
Haxe Completions12
Dart Completions607
Pascal Completions22
Lua Completions91
Perl Completions43
D Completions17
Elm Completions13
COBOL Completions6
Erlang Completions19
Total Stars3994
% of votes with a positive feedback rating76% of 10564
Total "Very Satisfied" Votes6767
Total "Somewhat Satisfied" Votes2564
Total "Not Satisfied" Votes1233
Ad
Contributors
  • g964 Avatar
  • jhoffner Avatar
  • Azuaron Avatar
  • bkaes Avatar
  • GiacomoSorbi Avatar
  • donaldsebleung Avatar
  • Chrono79 Avatar
  • kazk Avatar
  • JohanWiltink Avatar
  • Firefly2002 Avatar
  • Voile Avatar
  • kdmatrosov Avatar
  • danmbyrd Avatar
  • bdw429s Avatar
  • monadius Avatar
  • hobovsky Avatar
  • uniapi Avatar
  • trashy_incel Avatar
  • user8436785 Avatar
  • akar-0 Avatar
  • Just4FunCoder Avatar
Ad