6 kyu

Are they the "same"?

32,127 of 107,541g964

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 Trained296067
Total Skips60318
Total Code Submissions1998472
Total Times Completed107541
Ruby Completions3756
C# Completions6195
Python Completions34254
Java Completions11576
Clojure Completions548
Haskell Completions1394
JavaScript Completions32127
CoffeeScript Completions53
Elixir Completions554
TypeScript Completions2640
C++ Completions4631
PHP Completions2248
Crystal Completions51
F# Completions181
C Completions2603
Rust Completions1703
Swift Completions886
R Completions247
Scala Completions760
Shell Completions128
OCaml Completions91
Julia Completions116
Kotlin Completions1015
PowerShell Completions78
Go Completions1422
Nim Completions37
PureScript Completions35
NASM Completions20
Racket Completions65
Groovy Completions45
Prolog Completions35
CFML Completions20
Fortran Completions20
Haxe Completions12
Dart Completions606
Pascal Completions22
Lua Completions91
Perl Completions43
D Completions17
Elm Completions13
COBOL Completions6
Erlang Completions19
Total Stars3994
% of votes with a positive feedback rating76% of 10563
Total "Very Satisfied" Votes6766
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