Skip to content

Instantly share code, notes, and snippets.

@shivswami
Last active February 27, 2016 09:27
Show Gist options
  • Save shivswami/8fd1ebbc855f0770292d to your computer and use it in GitHub Desktop.
Save shivswami/8fd1ebbc855f0770292d to your computer and use it in GitHub Desktop.

RADAR Teaser Graph

One look at picture and I thought it was Graph domain

RADAR Teaser

Spell the word RADAR.

Start on any R. Advance in any direction, forwards or backwards.

Follow the lines from letter to letter.

You can not skip letters.

MERGE (A00:GNode {idr:'A00',x:'0', y:'0', ltr:'R'})
MERGE (A10:GNode {idr:'A10',x:'1', y:'0', ltr:'A'})
MERGE (A20:GNode {idr:'A20',x:'2', y:'0', ltr:'D'})
MERGE (A30:GNode {idr:'A30',x:'3', y:'0', ltr:'A'})
MERGE (A40:GNode {idr:'A40',x:'4', y:'0', ltr:'R'})
MERGE (A01:GNode {idr:'A01',x:'0', y:'1', ltr:'A'})
MERGE (A11:GNode {idr:'A11',x:'1', y:'1', ltr:'A'})
MERGE (A31:GNode {idr:'A31',x:'3', y:'1', ltr:'A'})
MERGE (A41:GNode {idr:'A41',x:'4', y:'1', ltr:'A'})
MERGE (A02:GNode {idr:'A02',x:'0', y:'2', ltr:'D'})
MERGE (A22:GNode {idr:'A22',x:'2', y:'2', ltr:'D'})
MERGE (A42:GNode {idr:'A42',x:'4', y:'2', ltr:'D'})
MERGE (A03:GNode {idr:'A03',x:'0', y:'3', ltr:'A'})
MERGE (A13:GNode {idr:'A13',x:'1', y:'3', ltr:'A'})
MERGE (A33:GNode {idr:'A33',x:'3', y:'3', ltr:'A'})
MERGE (A43:GNode {idr:'A43',x:'4', y:'3', ltr:'A'})
MERGE (A04:GNode {idr:'A04',x:'0', y:'4', ltr:'R'})
MERGE (A14:GNode {idr:'A14',x:'1', y:'4', ltr:'A'})
MERGE (A24:GNode {idr:'A24',x:'2', y:'4', ltr:'D'})
MERGE (A34:GNode {idr:'A34',x:'3', y:'4', ltr:'A'})
MERGE (A44:GNode {idr:'A44',x:'4', y:'4', ltr:'R'})

CREATE (A00)-[:NEIGHBOUR]->(A10)
CREATE (A10)-[:NEIGHBOUR]->(A20)
CREATE (A20)-[:NEIGHBOUR]->(A30)
CREATE (A30)-[:NEIGHBOUR]->(A40)
CREATE (A00)-[:NEIGHBOUR]->(A01)
CREATE (A00)-[:NEIGHBOUR]->(A11)
CREATE (A20)-[:NEIGHBOUR]->(A11)
CREATE (A20)-[:NEIGHBOUR]->(A31)
CREATE (A40)-[:NEIGHBOUR]->(A31)
CREATE (A40)-[:NEIGHBOUR]->(A41)
CREATE (A01)-[:NEIGHBOUR]->(A02)
CREATE (A02)-[:NEIGHBOUR]->(A11)
CREATE (A11)-[:NEIGHBOUR]->(A22)
CREATE (A22)-[:NEIGHBOUR]->(A31)
CREATE (A31)-[:NEIGHBOUR]->(A42)
CREATE (A42)-[:NEIGHBOUR]->(A41)
CREATE (A42)-[:NEIGHBOUR]->(A43)
CREATE (A42)-[:NEIGHBOUR]->(A33)
CREATE (A33)-[:NEIGHBOUR]->(A22)
CREATE (A22)-[:NEIGHBOUR]->(A13)
CREATE (A13)-[:NEIGHBOUR]->(A02)
CREATE (A02)-[:NEIGHBOUR]->(A03)
CREATE (A03)-[:NEIGHBOUR]->(A04)
CREATE (A04)-[:NEIGHBOUR]->(A13)
CREATE (A13)-[:NEIGHBOUR]->(A24)
CREATE (A24)-[:NEIGHBOUR]->(A33)
CREATE (A33)-[:NEIGHBOUR]->(A44)
CREATE (A44)-[:NEIGHBOUR]->(A43)
CREATE (A04)-[:NEIGHBOUR]->(A14)
CREATE (A14)-[:NEIGHBOUR]->(A24)
CREATE (A24)-[:NEIGHBOUR]->(A34)
CREATE (A34)-[:NEIGHBOUR]->(A44)

This gives us the following graph to play with:

Let’s check how many nodes we have now: Cypher 01

Match n RETURN "Hello Graph with " + count(*) + " Nodes! in Gist by Shivprakash Swami " AS welcome;

List all nodes and their relationships: Cypher 02

MATCH (n)-[r]->(m)  RETURN n AS from, r AS `->`, m AS to;

List most connected nodes in desc order: Cypher 03

Match n return n, length(n--()) as connectedness order by connectedness desc limit 5;

Get 5 nodes connected via 4 edges - starting with $: Cypher 06

MATCH p =(:GNode { ltr: "R" })<-[:NEIGHBOUR*4]->(:GNode { ltr: "R" })
RETURN extract(n IN nodes(p)| coalesce(n.idr)) AS `Path`, extract(n IN nodes(p)| coalesce(n.ltr)) AS `Letters`, length(p)
ORDER BY Path[0], Path[1], Path[2],Path[3]
@jexp
Copy link

jexp commented Feb 27, 2016

Really cool idea.

I recommend:

= RADAR Teaser Graph
:neo4j-version: 2.3
:author: Shivprakash Swami
:twitter: @shivswami
:style: blue:GNode(ltr)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment